flink 为流和批处理(streaming/batch)提供了不同层级的抽象
- 最底层是 stateful streaming. 它通过 process function 嵌入到 DataStream API 中
- 实际中,大多数应用程序并不需要最底层的stateful streaming. 而是通过core api处理 eg: DataStream API(处理无界的和有界的流). DataSet API(有界的数据集合). 这些流式的API 数据处理的块。eg: 各种各样用户自定义的 转化(transformation),joins,aggregations window,state等等.
- Table API 是一个以表为中心的 声明式的DSL。 这里表中的数据可以动态的改变。这里的table api 遵循传统关系型数据库的schema。
- 最高层是sql层
flink程序和数据流
flink 程序最主要的三个块: source,transformation,sink。
. source: 数据的来源,可以是hdfs,kafka,storm,csv,gz等各种格式。
. transformation: 可以是 filter,map,foldmap
. sink: 类似于函数式编程中的规约的概念。