跳到主要内容

类型映射

对于每个 CDC 数据类型(org.apache.flink.cdc.common.types.DataType 的子类),我们规定了用于内部序列化和反序列化的 CDC 内部类型,以及用于类型合并、类型转换和 UDF 求值的 Java 外部类型。

内部类型和外部类型​

一些基本类型对于内部类型和 Java 类可能具有相同的表示形式(例如,DataTypes.INT() 使用 java.lang.Integer 同时作为内部和外部类型)。 其他类型可能使用不同的表示形式,例如,DataTypes.TIMESTAMP 在内部表示中使用 org.apache.flink.cdc.common.data.TimestampData,在外部操作中使用 java.time.LocalDateTime。

如果您正在编写 YAML Pipeline 连接器,DataChangeEvent 应当携带内部类型 RecordData,并且其所有字段都是内部类型的实例。

如果您正在编写 Transform UDF,则其参数和返回值类型应定义为其外部 Java 类型。

完整类型列表​

CDC 数据类型CDC 内部类型Java 外部类型
BOOLEANjava.lang.Booleanjava.lang.Boolean
TINYINTjava.lang.Bytejava.lang.Byte
SMALLINTjava.lang.Shortjava.lang.Short
INTEGERjava.lang.Integerjava.lang.Integer
BIGINTjava.lang.Longjava.lang.Long
FLOATjava.lang.Floatjava.lang.Float
DOUBLEjava.lang.Doublejava.lang.Double
DECIMALorg.apache.flink.cdc.common.data.DecimalDatajava.math.BigDecimal
DATEorg.apache.flink.cdc.common.data.DateDatajava.time.LocalDate
TIMEorg.apache.flink.cdc.common.data.TimeDatajava.time.LocalTime
TIMESTAMPorg.apache.flink.cdc.common.data.TimestampDatajava.time.LocalDateTime
TIMESTAMP_TZorg.apache.flink.cdc.common.data.ZonedTimestampDatajava.time.ZonedDateTime
TIMESTAMP_LTZorg.apache.flink.cdc.common.data.LocalZonedTimestampDatajava.time.Instant
CHAR
VARCHAR
STRING
org.apache.flink.cdc.common.data.StringDatajava.lang.String
BINARY
VARBINARY
BYTES
byte[]byte[]
ARRAYorg.apache.flink.cdc.common.data.ArrayDatajava.util.List<T>
MAPorg.apache.flink.cdc.common.data.MapDatajava.util.Map<K, V>
ROWorg.apache.flink.cdc.common.data.RecordDatajava.util.List<Object>
VARIANTorg.apache.flink.cdc.common.types.variant.Variantorg.apache.flink.cdc.common.types.variant.Variant