Flink数据类型映射大全

Flink 支持连接多种数据库,如MySQL、PostgresSQL、Derby。Derby通常用于测试。从关系数据库数据类型到Flink SQL数据类型的字段数据类型映射如下表所示,映射表可以帮助在Flink中轻松定义JDBC表。

MySQL typePostgreSQL typeFlink SQL type
TINYINTTINYINT
SMALLINT,
TINYINT UNSIGNED
SMALLINT,
INT2,
SMALLSERIAL,
SERIAL2
SMALLINT
INT,
MEDIUMINT,
SMALLINT UNSIGNED
INTEGER,
SERIAL
INT
BIGINT,
INT UNSIGNED
BIGINT,
BIGSERIAL
BIGINT
BIGINT UNSIGNEDDECIMAL(20,0)
BIGINTBIGINTBIGINT
FLOATREAL,
FLOAT4
FLOAT
DOUBLE,
DOUBLE PRECISION
FLOAT8,
DOUBLE PRECISION
DOUBLE
NUMERIC(p, s),
DECIMAL(p, s)
NUMERIC(p, s),
DECIMAL(p, s)
DECIMAL(p, s)
BOOLEAN,
TINYINT(1)
BOOLEANBOOLEAN
DATEDATEDATE
TIME [§]TIME [§] [WITHOUT TIMEZONE]TIME [§] [WITHOUT TIMEZONE]
DATETIME [§]TIMESTAMP [§] [WITHOUT TIMEZONE]TIMESTAMP [§] [WITHOUT TIMEZONE]
CHAR(n),
VARCHAR(n),
TEXT
CHAR(n),
CHARACTER(n),
VARCHAR(n),
CHARACTER VARYING(n),
TEXT
STRING
BINARY,
VARBINARY,
BLOB
BYTEABYTES
ARRAYARRAY

在API中,Flink尝试使用反射从类信息中自动提取数据类型,以避免重复的手动模式工作。但是,反射性地提取数据类型并不总是成功的,因为可能会丢失逻辑信息。因此,可能需要在类或字段声明附近添加其他信息以支持提取逻辑。下表列出了无需进一步信息即可隐式映射到数据类型的类。
注意:如果您打算在 Scala 中实现类,建议使用包装类型(例如java.lang.Integer)而不是 Scala 的原语。Scala的原语(例如Intor Double)被编译为JVM 原语(例如 int/double)并产生NOT NULL如下表所示的语义。此外,在泛型中使用的Scala原语(例如java.util.Map[Int, Double])在编译期间会被删除,并导致类信息类似于java.util.Map[java.lang.Object, java.lang.Object]。

Java ClassData Type
java.lang.StringSTRING
java.lang.BooleanBOOLEAN
booleanBOOLEAN NOT NULL
java.lang.ByteTINYINT
byteTINYINT NOT NULL
java.lang.ShortSMALLINT
shortSMALLINT NOT NULL
java.lang.IntegerINT
intINT NOT NULL
java.lang.LongBIGINT
longBIGINT NOT NULL
java.lang.FloatFLOAT
floatFLOAT NOT NULL
java.lang.DoubleDOUBLE
doubleDOUBLE NOT NULL
java.sql.DateDATE
java.time.LocalDateDATE
java.sql.TimeTIME(0)
java.time.LocalTimeTIME(9)
java.sql.TimestampTIMESTAMP(9)
java.time.LocalDateTimeTIMESTAMP(9)
java.time.OffsetDateTimeTIMESTAMP(9) WITH TIME ZONE
java.time.InstantTIMESTAMP_LTZ(9)
java.time.DurationINVERVAL SECOND(9)
java.time.PeriodINTERVAL YEAR(4) TO MONTH
byte[]BYTES
T[]ARRAY
java.util.Map<K, V>MAP<K, V>
structured type Tanonymous structured type T

参考
https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/dev/table/types/
https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/connectors/table/jdbc/

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值