Flink与Kylin深度实践
上QQ阅读APP看书,第一时间看更新

1.4 编程模型

Flink的编程模型主要包含了以下几大功能模块,例如状态编程、流式处理和批量处理、Table API以及更高级的SQL抽象语法等,如图1-2所示。

图1-2 Flink编程模型

1)有状态的流式处理层:最底层的抽象仅仅提供有状态的数据流,它通过处理函数嵌入数据流API(DataStream API)中。用户可以通过它自由处理单流或者多流,并保持一致性和容错性。同时,用户可以进行注册事件时间和处理时间的回调,以实现复杂的计算逻辑。

2)核心API层:提供数据处理的基础模块,如transformation、join、aggregation、window、state以及数据类型等。

3)Table API层:确定了围绕关系表的DSL(领域描述语言)。Table API遵循关系模型标准:对关系型数据库中的表,API也提供了相应的操作,如select、project、join、groupby、aggregate等。Table API声明式地定义了逻辑上的操作(logical operation),Flink会在执行前对Table API逻辑进行优化。同时,Flink代码允许混合使用Table API和DataStram/DataSet API。

4)SQL层:类似Table API的语法,定义于Table API层次之上,但它提供的是纯SQL查询表达式。