Flink 定义 Temporal Table 的两种方式:Temporal Table DDL 和 Temporal Table Function

|--------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| | 博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧二维码进入京东手机购书页面。 |

从各方收集的资料以及官方文档对 Temporal JoinsTemporal Table Function 两部分的描述可以确定的是:

Flink 是先有的 Temporal Table Function,利用它实现了类版本表的功能,注意,是类版本表,不是现在文档中定义的标准版本表概念,后来,Flink 才引入了 Temporal Table (版本表 / 普通表)概念(本文称之为"Temporal Table DDL"方式),同时实现了 SQL 2011 标准,引入了 FOR SYSTEM_TIME AS OF 关键字实现了基于版本表的 Temporal Join

在 Temporal Join 中,有两种模式,分别是:基于事件时间 和 基于处理时间,最初,Temporal Table DDL 和 Temporal Table Function 都支持这两种模式,但后来,由于 FLINK-19830 问题,使用 Temporal Table DDL 定义的时态表不再支持基于处理时间的 Temporal Join,这就是为什么我们今天搜索一些 Temporal Join 的技术文章时,会发现很多 Temporal Table DDL + 基于处理时间的 Temporal Join 示例,但在现在的官方文档中是没有对等示例的。

Temporal Table DDL 和 Temporal Table Function 这两种方式并非完全等价,它们之间存在两点差异:

  • SQL 中可以定义 Temporal Table DDL,但不能定义 Temporal Table Function

  • Temporal Table DDL 和 Temporal Table Function 都可以实现 Temporal Join,它们都支持基于事件时间的 Temporal Join,但只有 Temporal Table Function 可以 Temporal Join 任何表/视图的最新版本(即"基于处理时间的 Temporal Join"),而 Temporal Table DDL 最初引入时可以的,后因 FLINK-19830 问题又被禁止

以下是对 Temporal Table DDL 和 Temporal Table Function 的对比总结:

方式 基于事件时间的 Temporal Join 基于处理事件的 Temporal Join 可完全在 SQL 中定义
Temporal Table DDL 支持 不支持 (曾经支持,因为 Issue FLINK-19830 而在新版本中禁止) 可以
Temporal Table Function 支持 支持(但同样有语义问题,出于兼容考虑才支持) 不可以(目前只能在代码中函数注册函数)
相关推荐
Hello.Reader13 小时前
Flink JobManager 内存配置指南别让“控制面”先 OOM
大数据·flink
Hello.Reader15 小时前
写给生产环境的 Flink 内存配置Process Memory、TaskManager 组件拆解与场景化调优
大数据·flink
DolphinScheduler社区17 小时前
Linux 环境下,Apache DolphinScheduler 如何驱动 Flink 消费 Kafka 数据?
linux·flink·kafka·开源·apache·海豚调度·大数据工作流调度
Hello.Reader17 小时前
Flink 进程三种配置方式、JVM 参数映射与常见踩坑
大数据·jvm·flink
Hello.Reader18 小时前
Flink TaskManager 内存配置从“总量”到“组件”,把资源用在刀刃上
大数据·flink
zhangkaixuan4561 天前
Paimon 读取数据流程深度解析
大数据·hadoop·flink·apache·paimon
zhangkaixuan4562 天前
paimon 主键表 vs 非主键表配置速查
大数据·数据库·flink·apache·paimon
后季暖2 天前
flink报错记录和并行度回顾:Slot request bulk is not fulfillable!
大数据·flink
【赫兹威客】浩哥3 天前
【赫兹威客】伪分布式Flink测试教程
大数据·分布式·flink
Hello.Reader3 天前
Flink 2.0 从 flink-conf.yaml 到 config.yaml 的正确打开方式(含迁移与最佳实践)
java·前端·flink