Flink数据类型映射大全
Flink 支持连接多种数据库,如MySQL、PostgresSQL、Derby。Derby通常用于测试。从关系数据库数据类型到Flink SQL数据类型的字段数据类型映射如下表所示,映射表可以帮助在Flink中轻松定义JDBC表。
MySQL type | PostgreSQL type | Flink SQL type |
---|---|---|
TINYINT | TINYINT | |
SMALLINT, TINYINT UNSIGNED |
SMALLINT, INT2, SMALLSERIAL, SERIAL2 |
SMALLINT |
INT, MEDIUMINT, SMALLINT UNSIGNED |
INTEGER, SERIAL |
INT |
BIGINT, INT UNSIGNED |
BIGINT, BIGSERIAL |
BIGINT |
BIGINT UNSIGNED | DECIMAL(20,0) | |
BIGINT | BIGINT | BIGINT |
FLOAT | REAL, 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) |
BOOLEAN | BOOLEAN |
DATE | DATE | DATE |
TIME [(p)] | TIME [(p)] [WITHOUT TIMEZONE] | TIME [(p)] [WITHOUT TIMEZONE] |
DATETIME [(p)] | TIMESTAMP [(p)] [WITHOUT TIMEZONE] | TIMESTAMP [(p)] [WITHOUT TIMEZONE] |
CHAR(n), VARCHAR(n), TEXT |
CHAR(n), CHARACTER(n), VARCHAR(n), CHARACTER VARYING(n), TEXT |
STRING |
BINARY, VARBINARY, BLOB |
BYTEA | BYTES |
ARRAY | ARRAY |
在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 Class | Data Type |
---|---|
java.lang.String | STRING |
java.lang.Boolean | BOOLEAN |
boolean | BOOLEAN NOT NULL |
java.lang.Byte | TINYINT |
byte | TINYINT NOT NULL |
java.lang.Short | SMALLINT |
short | SMALLINT NOT NULL |
java.lang.Integer | INT |
int | INT NOT NULL |
java.lang.Long | BIGINT |
long | BIGINT NOT NULL |
java.lang.Float | FLOAT |
float | FLOAT NOT NULL |
java.lang.Double | DOUBLE |
double | DOUBLE NOT NULL |
java.sql.Date | DATE |
java.time.LocalDate | DATE |
java.sql.Time | TIME(0) |
java.time.LocalTime | TIME(9) |
java.sql.Timestamp | TIMESTAMP(9) |
java.time.LocalDateTime | TIMESTAMP(9) |
java.time.OffsetDateTime | TIMESTAMP(9) WITH TIME ZONE |
java.time.Instant | TIMESTAMP_LTZ(9) |
java.time.Duration | INVERVAL SECOND(9) |
java.time.Period | INTERVAL YEAR(4) TO MONTH |
byte[] | BYTES |
T[] | ARRAY |
java.util.Map<K, V> | MAP<K, V> |
structured type T | anonymous 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/
分类:
CheatSheet
, Flink
« 上一篇: MySQL日期格式化参数大全
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律