Flink中Table API是什么意思
小编给大家分享一下Flink中Table API是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
什么是Table API
Table API & SQL 是一种声明式的 API。用户只需关心做什么,不用关心怎么做,比如图中的 WordCount 例子,只需要关心按什么维度聚合,做哪种类型的聚合,不需要关心底层的实现。
高性能。Table API & SQL 底层会有优化器对 query 进行优化。举个例子,假如 WordCount 的例子里写了两个 count 操作,优化器会识别并避免重复的计算,计算的时候只保留一个 count 操作,输出的时候再把相同的值输出两遍即可,以达到更好的性能。
流批统一。上图例子可以发现,API 并没有区分流和批,同一套 query 可以流批复用,对业务开发来说,避免开发两套代码。
标准稳定。Table API & SQL 遵循 SQL 标准,不易变动。API 比较稳定的好处是不用考虑 API 兼容性问题。
易理解。语义明确,所见即所得。
Table API 特性
Table API 使得多声明的数据处理写起来比较容易。
怎么理解?比如我们有一个 Table(tab),并且需要执行一些过滤操作然后输出到结果表,对应的实现是:tab.where("a < 10").inertInto("resultTable1");此外,我们还需要做另外一些筛选,然后也对结果输出,即 tab.where("a > 100").insertInto("resultTable2")。你会发现,用 Table API 写起来会非常简洁方便,两行代码就把功能实现了。Table API 是 Flink 自身的一套 API,这使得我们更容易地去扩展标准的 SQL。当然,在扩展 SQL 的时候并不是随意的去扩展,需要考虑 API 的语义、原子性和正交性,并且当且仅当需要的时候才去添加。
对比 SQL,我们可以认为 Table API 是 SQL 的超集。SQL 有的操作,Table API 可以有,然而我们又可以从易用性和功能性地角度对 SQL 进行扩展和提升。
如何获取一个Table
第一步,注册对应的 TableSource
第二步,调用 Table environement 的 scan 方法获取 Table 对象
注册 Table Source的3种方法
通过 Table descriptor 来注册
通过自定义 source 来注册
通过 DataStream 来注册
如何输出一个Table
Table descriptor
自定义 Table sink
输出成一个 DataStream
以上是"Flink中Table API是什么意思"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!