由于新版本Flink(v1.12.0)实现了流批一体,DataSet API
将被弃用,官方推荐统一使用DataStream API处理流数据和批数据。
Flink整体流程分为:创建执行环境、source、transform、sink、执行5个步骤
1. 执行环境
// 最简单的方式,根据当前运行上下文直接得到结果。
// 如果程序是独立运行就返回一个本地执行环境;
// 如果是创建jar,调用命令提交集群执行的就返回集群执行环境
val env1 = StreamExecutionEnvironment.getExecutionEnvironment
// 返回一个本地执行环境
val env2 = StreamExecutionEnvironment.createLocalEnvironment([core])
// 返回远端的集群执行环境
val env3 = StreamExecutionEnvironment.createRemoteEnvironment("jobManager-host", "jobManager-port", "jar-path")
2. Source
集合/scoket/kafka/文本…
生产环境一般是kafka,当然也可以自定义source以便扩展数据源。
自定义source
SourceFunction:单并行度,多并行使用ParallerSourceFunction
支持的数据类型
TypeInfo:Array、复合数据类型、元祖类型(Tuple)、Map…
3. Transform
转换算子
基本转换算子
map
一一映射,传入MapFunction即可
filter
传入FilterFunction即可
flatMap
扁平化map,先按照某种规则对数据进行拆分打散,再对拆分后的元素做转换处理。
传入FlatMapFunction即可
聚合算子
用户自定义函数
物理分区