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 支持 支持(但同样有语义问题,出于兼容考虑才支持) 不可以(目前只能在代码中函数注册函数)
相关推荐
张伯毅4 小时前
Flink 失败重试策略 :restart-strategy.type
大数据·flink·策略模式
TDengine (老段)7 小时前
TDengine 高级功能——流计算
大数据·物联网·flink·linq·时序数据库·tdengine·涛思数据
Linda L1 天前
Flink CDC将MySQL数据同步到数据湖
大数据·数据库·分布式·mysql·flink·kafka
北漂老男孩3 天前
Flink SQL 编程详解:从入门到实战难题与解决方案
大数据·sql·flink
动力暖暖4 天前
Flink2.0及Flink-operater在K8S上部署
大数据·flink·kubernetes
北漂老男孩4 天前
Flink Table API 编程入门实践
大数据·flink·学习方法
weixin_307779135 天前
Apache SeaTunnel 引擎深度解析:原理、技术与高效实践
大数据·flink·spark·数据库开发·etl
Microsoft Word5 天前
Flink
大数据·flink
lifallen5 天前
Apache Paimon:存储结构、写入及其源码分析
java·大数据·数据仓库·sql·flink·database
Apache Flink6 天前
基于 Flink+Paimon+Hologres 搭建淘天集团湖仓一体数据链路
大数据·flink·linq