b)动态表 & 连续查询(Continuous Query)
动态表 是 Flink 的支持流数据的 Table API 和 SQL 的核心概念;与表示批处理数据的静态表不同,动态表是随时间变化的,可以像查询静态批处理表一样查询它们。
查询动态表将生成一个 连续查询 ,一个连续查询永远不会终止,结果会生成一个动态表;查询不断更新其(动态)结果表,以反映其(动态)输入表上的更改;本质上,动态表上的连续查询非常类似于定义物化视图的查询。
需要注意的是,连续查询的结果在语义上总是等价于以批处理模式在输入表快照上执行的相同查询的结果。
下图显示了流、动态表和连续查询之间的关系:
- 将流转换为动态表;
- 在动态表上计算一个连续查询,生成一个新的动态表;
- 生成的动态表被转换回流。
注意: 动态表是一个逻辑概念,在查询执行期间不一定(完全)物化动态表。
示例:单击事件流的动态表和连续查询
[
user: VARCHAR, // 用户名
cTime: TIMESTAMP, // 访问 URL 的时间
url: VARCHAR // 用户访问的 URL
]