Flink-源码学习-FlinkSQL&Table-Table 体系-架构设计
一、概述
Table 是 Flink Table API 的核心操作对象,提供了流批统一的数据操作行为定义。对于批处理 Table 是静态表,对于流计算 Table 是动态表。动态表在 Flink 中抽象为 Table 接口。与表示批处理数据的静态表相比,动态表随时间而变化。将 SQL 查询作用于动态表,查询会持续执行而不会终止,叫作连续查询。
以 $Count$ 运算为例,对于静态表而言,$Count$ 是一个确定的值,而连续查询则会随着数据持续进入动态表,持续不断地更新 $Count$ 结果。从这个角度来说,流上的 SQL 实际上给出的总是中间结果。
二、Table Source
TableSource 提供了从外部系统(消息队列,KV 存储,数据库,文件系统等)接入数据,之后洼册到 TableEnvironment 中,然后可以通过 Table API 或者 SQL 进行查询。
引用本站文章
Flink-源码学习-FlinkSQL&Table-Table 体系-Connector-TableSource
Joker
三、Table
3.1. 架构设计
3.1.1. Table
Table 是 Table API 的核心接口,提供了常见的 SQL 数据操作接口。
3.1.2. TableImpl
如同 DataStream,Table 也有各种不同的变体,在 Flink 中的 DQL 查询语义中有7种可以相互转换的 Table,不同类型的 Table 之间的转换关系如图所示:
四、Table Sink
TableSink 提供了将 Flink 内部注册的 Table 中的数据写出到外部系统(Es,Hbase;消息队列数据库,文件系统等)
引用本站文章
Flink-源码学习-FlinkSQL&Table-Table 体系-Connector-TableSink
Joker
五、总结
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker!
评论
ValineTwikoo