《Flink原理、实战与性能优化》 —3.2 Flink编程接口
3.2 Flink编程接口
如图3-2所示,Flink根据数据集类型的不同将核心数据处理接口分为两大类,一类是支持批计算的接口DataSet API,另外一类是支持流计算的接口DataStream API。同时Flink将数据处理接口抽象成四层,由上向下分别为SQL API、Table API、DataStream /DataSet API以及Stateful Stream Processing API,用户可以根据需要选择任意一层抽象接口来开发Flink应用。
(1)Flink SQL
从图3-2中可以看出,Flink提供了统一的SQL API完成对批计算和流计算的处理,目前SQL API也是社区重点发展的接口层,对SQL API也正在逐步完善中,其主要因为SQL语言具有比较低的学习成本,能够让数据分析人员和开发人员更快速地上手,帮助其更加专注于业务本身而不是受限于复杂的编程接口。
图3-2 Flink接口分层与抽象
(2)Table API
Table API将内存中的DataStream和DataSet数据集在原有的基础之上增加Schema信息,将数据类型统一抽象成表结构,然后通过Table API提供的接口处理对应的数据集。SQL API则可以直接查询Table API中注册表中的数据表。Table API构建在DataStream和DataSet之上的同时,提供了大量面向领域语言的编程接口,例如GroupByKey、Join等操作符,提供给用户一种更加友好的处理数据集的方式。除此之外,Table API在转换为DataStream和DataSet的数据处理过程中,也应用了大量的优化规则对处理逻辑进行了优化。同时Table API中的Table可以和DataStream 及DataSet之间进行相互转换。
(3)DataStream API和DataSet API
DataStream API和DataSet API主要面向具有开发经验的用户,用户可以使用DataStream API处理无界流数据,使用DataSet API处理批量数据。DataStream API和DataSet API接口同时提供了各种数据处理接口,例如map,filter、oins、aggregations、window等方法,同时每种接口都支持了Java、Scala及Python等多种开发语言的SDK。
(4)Stateful Stream Process API
Stateful Stream Process API是Flink中处理Stateful Stream最底层的接口,用户可以使用Stateful Stream Process 接口操作状态、时间等底层数据。使用Stream Process API接口开发应用的灵活性非常强,可以实现非常复杂的流式计算逻辑,但是相对用户使用成本也比较高,一般企业在使用Flink进行二次开发或深度封装的时候会用到这层接口。
- 点赞
- 收藏
- 关注作者
评论(0)