diff --git a/chunjun-connectors/chunjun-connector-kudu/src/main/java/com/dtstack/chunjun/connector/kudu/converter/KuduRowConverter.java b/chunjun-connectors/chunjun-connector-kudu/src/main/java/com/dtstack/chunjun/connector/kudu/converter/KuduRowConverter.java index 412213c7e7..d016060594 100644 --- a/chunjun-connectors/chunjun-connector-kudu/src/main/java/com/dtstack/chunjun/connector/kudu/converter/KuduRowConverter.java +++ b/chunjun-connectors/chunjun-connector-kudu/src/main/java/com/dtstack/chunjun/connector/kudu/converter/KuduRowConverter.java @@ -40,6 +40,7 @@ import java.math.BigDecimal; import java.math.BigInteger; import java.sql.Date; +import java.sql.Timestamp; import java.time.LocalDate; import java.util.List; @@ -182,12 +183,15 @@ protected ISerializationConverter createExternalConverter(LogicalType return (val, index, operation) -> operation.getRow().addBinary(columnName.get(index), val.getBinary(index)); case "DECIMAL": + final int decimalPrecision = ((DecimalType) type).getPrecision(); + final int decimalScale = ((DecimalType) type).getScale(); return (val, index, operation) -> operation .getRow() .addDecimal( - columnName.get(index), - ((ColumnRowData) val).getField(index).asBigDecimal()); + index, + val.getDecimal(index, decimalPrecision, decimalScale) + .toBigDecimal()); case "VARCHAR": return (val, index, operation) -> operation @@ -212,7 +216,11 @@ protected ISerializationConverter createExternalConverter(LogicalType .getRow() .addTimestamp( columnName.get(index), - ((ColumnRowData) val).getField(index).asTimestamp()); + new Timestamp( + ((TimestampData) + ((GenericRowData) val) + .getField(index)) + .getMillisecond())); default: throw new UnsupportedTypeException(type); }