Flink Table API & SQL Planner 演变
Posted @SmartSi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink Table API & SQL Planner 演变相关的知识,希望对你有一定的参考价值。
1. 背景:架构升级
Flink 1.9 之前,Flink 在其分布式流式执行引擎之上有两套相对独立的 DataStream 和 DataSet API,分别来描述流计算和批处理的作业。在这两个 API 之上,则提供了一个流批统一的 API,即 Table API 和 SQL。用户可以使用相同的 Table API 程序或者 SQL 来描述流批作业,只是在运行时需要告诉 Flink 引擎希望以流的形式运行还是以批的流式运行,此时 Table 层的优化器就会将程序优化成 DataStream 作业或者 DataSet 作业。
但是仔细查看 DataStream 和 DataSet 底层实现细节,我们会发现这两个 API 共享的东西其实不多。它们有各自独立的翻译和优化的流程,而且在真正运行的时候,两者也使用了完全不同的 Task。这样的不一致对用户和开发者来说可能存在问题。
对于用户来说,他们在编写作业的时候需要在两个 API 之间进行选择,而这两个 API 不仅语义不同,同时支持的 connector 种类也不同,难免会造成一些困扰。Table 尽管在 API 上已经进行了统一,但因为底层实现还是基于 DataStream 和 DataSet,也会受到刚才不一致的问题的影响;对于开发者来说,由于这两套流程相对独立,因此基本上很难做到代码的
以上是关于Flink Table API & SQL Planner 演变的主要内容,如果未能解决你的问题,请参考以下文章
2021年大数据Flink(三十):Flink Table API & SQL 介绍
Flink Table API & SQL Planner 演变
18-flink-1.10.1-Table API & Flink SQL
Flink Table API & SQL Planner 演变