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 演变

Flink SQL - 2.Table API & SQL 概述与常规 API

Flink SQL - 1.Table API && Sql 入门 Demo