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 支持 支持(但同样有语义问题,出于兼容考虑才支持) 不可以(目前只能在代码中函数注册函数)
相关推荐
warrah3 小时前
flink-cdc同步数据到doris中
flink·doris
坚定信念,勇往无前3 小时前
Spring Boot中整合Flink CDC 数据库变更监听器来实现对MySQL数据库
数据库·spring boot·flink
undo_try5 小时前
大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(2)
flink·bigdata·paimon
roman_日积跬步-终至千里1 天前
【Flink 实战】Flink 中 Akka 通信与内存占用分析
大数据·flink
抛砖者1 天前
8. Flink-CDC
flink·flink-cdc
码上淘金1 天前
Apache Flink架构深度解析:任务调度、算子数据同步与TaskSlot资源管理机制
大数据·架构·flink
roman_日积跬步-终至千里1 天前
【Flink实战】Flink网络内存和托管内存
服务器·网络·flink
Ray.19981 天前
优化 Flink 消费 Kafka 数据的速度:实战指南
大数据·flink·kafka
D愿你归来仍是少年1 天前
Python解析 Flink Job 依赖的checkpoint 路径
大数据·python·flink
viperrrrrrrrrr72 天前
大数据学习(49) - Flink按键分区状态(Keyed State)
大数据·学习·flink