目录
Flink简介
Flink是一个优秀的流式处理引擎,不仅拥有完善的流式处理解决方案,而且将批处理视为有界流,完美实现了流批处理一体化。
Flink能干啥
流式分析
Flink可持续不断地处理事件流,并明确支持以下三种时间语义:
- 事件时间(event time): 事件产生的时间,记录的是设备生产(或者存储)事件的时间;
- 摄取时间(ingestion time): Flink 读取事件时记录的时间;
- 处理时间(processing time): Flink pipeline 中具体算子处理事件的时间。
值得一提的是Flink的DataStream API和Table API & SQL均可支持这三种语义。
数据管道&ETL
Flink擅长ETL(抽取、转换、加载)管道任务,从一个或多个数据源获取数据,再进行一些信息补充和转换操作,最后将结果存储起来。除了使用常见的DataStream API来实现这些功能之外,还可以使用Table API & SQL来实现。
事件驱动应用
通过处理函数(ProcessFunction)将事件处理与时钟(Timer)、状态(State)相结合,可以构建强大的流处理应用,从而实现逻辑复杂的事件驱动应用。
典型的事件驱动类应用有:
- 欺诈检测(Fraud detection)
- 异常检测(Anomaly detection)
- 基于规则的告警(Rule-based alerting)
- 业务流程监控(Business process monitoring)
- Web应用程序(社交网络)
玩转Flink
通常而言,通过Flink的Table API & SQL就可以实现常见的流式分析、数据管道&ETL和事件驱动应用。由于SQL是一种高级开发语言,比DataStream API要简单很多,且可维护性很高。因此,如果对Flink的Table API & SQL做一些抽象化封装,必然可以极大提高开发效率。基于此,flink-jobs便应运而生。
flink-jobs为基于Flink的Java应用程序提供快速集成的能力,可通过继承FlinkJobsRunner快速构建基于Java的Flink流批一体应用程序。flink-jobs提供了数据源管理模块,通过