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 支持 支持(但同样有语义问题,出于兼容考虑才支持) 不可以(目前只能在代码中函数注册函数)
相关推荐
华农DrLai10 小时前
Spark SQL Catalyst 优化器详解
大数据·hive·sql·flink·spark
岁岁种桃花儿10 小时前
Flink从入门到上天系列第一篇:搭建第一个Flink程序
大数据·linux·flink·数据同步
Hello.Reader19 小时前
Flink ZooKeeper HA 实战原理、必配项、Kerberos、安全与稳定性调优
安全·zookeeper·flink
Hello.Reader1 天前
Flink 使用 Amazon S3 读写、Checkpoint、插件选择与性能优化
大数据·flink
Hello.Reader1 天前
Flink 对接 Google Cloud Storage(GCS)读写、Checkpoint、插件安装与生产配置指南
大数据·flink
Hello.Reader1 天前
Flink Kubernetes HA(高可用)实战原理、前置条件、配置项与数据保留机制
贪心算法·flink·kubernetes
wending-Y1 天前
记录一次排查Flink一直重启的问题
大数据·flink
Hello.Reader1 天前
Flink 对接 Azure Blob Storage / ADLS Gen2:wasb:// 与 abfs://(读写、Checkpoint、插件与认证)
flink·flask·azure
Hello.Reader1 天前
Flink 文件系统通用配置默认文件系统与连接数限制实战
vue.js·flink·npm