flink学习(六)——flink api层次
在前文我们写了一个WordCount程序体验了一下flink程序的编写。在本篇中我们详细学习下flink api的分类及其应用场景。Flink’s APIflink提供了4个层次的api抽象:在最下层,就是有状态流式编程,它提供了状态编程和时间编程(时间编程后面会学到)的基础能力。它通过Process Function嵌入到DataStream API中。它It is embedded into
·
在前文我们写了一个WordCount程序体验了一下flink程序的编写。在本篇中我们详细学习下flink api的分类及其应用场景。
Flink’s API
flink提供了4个层次的api抽象:
- 在最下层,就是有状态流式编程,它提供了
ProcessFunctionAPI。flink在这个底层api上帮我们实现了最基础的流式处理能力,我们可以在上门进行有状态编程,并且我们可以自定义定时器,可以实现复杂的时间语义处理。(注意:ProcessFunction是嵌入到DataStreamAPI中使用的)。 - 在core api层,flink提供了
DataStreamAPI和DataSetAPI。这两个API提供了数据处理的基本操作:各种数据转化(map,flatmap,filter等等),分组,join,window,状态编程等等。我们在前文写的WordCount程序就是基于DataStreamAPI实现的。 Table API是基于表的声明式dsl。它与DataStream区别主要在以下几个方面:- 遵循关系型数据模型,自带schema,提供了类sql操作,如select,project,join,group-by等等。
- 声明式api,指定数据处理逻辑,不指定代码实现逻辑
- 可实现udf,但是表达力不如core api
- 在执行前,计划器会优化执行逻辑
Table可与DataStream/DataSet无缝转化。
- flink提供的最高层api是flink-sql。它的抽象层次与
Table API类似,但是允许用户直接写sql便可以执行job,而无需会写java或scala代码。
这四层关系很好理解,简单总结一下,主要是有以下两点:
1. 越往上层,开发人员写的代码越简洁,面向的开发人员越广。
2. 越往上层,处理的数据越结构化,功能灵活性越低。
更多推荐



所有评论(0)