Flink
基础语义
Streams
- unbounded stream:无限数据流
- bounded stream:有限数据流
二者的区别在于无限数据流的数据会随时间的推演而持续增加,计算持续进行且不存在结束的状态,相对的有限数据流数据大小固定,计算最终会完成并处于结束的状态。
State
无限数据流需要不断保持一个查询状态
Time
分为 Event time、Ingestion time、Processing time。Flink 的无限数据流是一个持续的过程,时间是我们判断业务状态是否滞后,数据处理是否及时的重要依据。
API
API 通常分为三层,由上而下可分为 SQL / Table API、DataStream API、ProcessFunction
结构
批处理
理想批处理
有状态分散式流处理
优势
- 状态容错
- 状态维护
Flink v1.9
DataStream API
- maven配置
- 编写Flink程序
数据流编程模型
抽象级别
程序和数据流
Flink程序的基本构建块是流和转换。
并行数据流
Flink中的程序本质上是并行的和分布式的。
时间
- 事件时间是创建事件的时间。
- 接收时间是事件在源操作员进入Flink数据流的时间。
- 处理时间是每个执行基于时间的操作的操作员的本地时间。