Flin(二):DataStream API_算子
一、流元素
Flink的DataStream Api 支持的流元素:
1、基本类型:例如字符串、整型、布尔型、数组等;
2、Java元组和POJO类型
3、Scala元素组和case类;
二、执行环境
每个Flink应用需要一个执行环境,流处理应用需要StreamExecutionEnvironment,例如:
treamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream API调用构成一个数据流附加到执行环境,当调用env.execute()
时,数据流将被打包并发送到作业管理器(JobManager),JobManager将作业并行化切片并分发到任务管理器(TaskManager)执行。作业的每个并行切片将在一个任务槽(task slot)中执行。
注意:调用execute()
时应用才真正开始运行。
三、算子
source算子(StreamExecutionEnvironment
类的方法)
fromElements()
:从指定元素创建流fromCollection()
:从指定集合创建流fromSequence()
:从整数区间创建流readTextFile()
:读取文本文件,每行作为一个元素socketTextStream()
:从套接字读取数据,使用指定的分隔符addSource()
:使用自定义source函数,见DataStream Connectors
转换算子(DataStream
及其子类的方法)
map()
:元素一对一映射flatMap()
:元素一对n映射filter()
:按指定的条件过滤元素keyBy()
:按指定的key分组reduce()
:对已分组的流进行聚合union()
:合并多个流
sink算子(DataStream
及其子类的方法)
print()
:将每个元素打印到标准输出流writeAsText()
:写入文本文件,每个元素占一行writeAsCsv()
:写入CSV文件writeToSocket()
:写入套接字addSink()
:使用自定义sink函数