1.接口分层
Flink提供了不同级别的接口,最底层的是状态数据流处理,最高层是SQL
1.1 状态数据流处理
通过过程函数,被继承到DataStream API中
有状态数据流处理接口,
1.2 DataStream 和 DataSet API
核心API
DataStream 用来处理有界 和 无界数据流。
DataSet API 用来处理有界 数据流。
该接口提供了大量的通用组件
另外,
DataStream 集成更底层的函数
DataSet API 对有界数据提供了额外的支持
1.3 Table API
1.以表为中心,类似关系型数据库的二维表
2.提供可比较的操作,select, group by等
3.Table API 可以自定义函数进行扩展,但在表达能力上,比不上核心API。(不过Table API代码更简洁)
4.Table API是指定程序应该执行哪些操作,而不是精确的指定程序的执行步骤
5.Table API 在执行前会进行优化,另外Table API 和 DataStream , DataSet 之间可以无缝切换。所以在程序中可以混合只用。
1.4 SQL
Flink最高级封装接口就是 flink SQL
语法和表达能力上和Table API 类似,唯一的区别就是通过使用SQL查询语言实现程序。
SQL查询和Table API 交互密切,SQL可以直接在Table API中创建的表上查询