由于新版本Flink(v1.12.0)实现了流批一体,DataSet API将被弃用,官方推荐统一使用DataStream API处理流数据和批数据。
Flink整体流程分为:创建执行环境、source、transform、sink、执行5个步骤

1. 执行环境

  1. // 最简单的方式,根据当前运行上下文直接得到结果。
  2. // 如果程序是独立运行就返回一个本地执行环境;
  3. // 如果是创建jar,调用命令提交集群执行的就返回集群执行环境
  4. val env1 = StreamExecutionEnvironment.getExecutionEnvironment
  5. // 返回一个本地执行环境
  6. val env2 = StreamExecutionEnvironment.createLocalEnvironment([core])
  7. // 返回远端的集群执行环境
  8. 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即可

聚合算子

用户自定义函数

物理分区