DataStream API 概述
- 前言
- 一、DataStream API 应用实例
-
-
- DataStream程序主要包含3部分:
- 1、StreamExecutionEnvironment初始化:该部分主要创建和初始化StreamExecutionEnvironment,提供通过DataStream API构建Flink作业需要的执行环境,包括设定ExecutionConfig、CheckpointConfig等配置信息以及StateBackend和TimeCharacteristic等变量
- 2、业务逻辑代码转换:env中提供了创建DataStream的方法,通过env.readTextFile()方法读取文本数据并构建DataStreamSource数据集,之后所有的DataStream操作都会以DataStreamSource为头节点。同时DataStreamAPI 提供了各种转换操作,如map、reduce、keyBy等算子,用于构建完整的计算逻辑。
- 3、程序执行env.execute(),在execute()方法中基于DataStream之间的转换生成StreamGraph,并将StreamGraph转成成JobGraph,最终将JobGraph提交到集群
-
- 二、DataStream的主要成员变量
-
-
- 2.1 DataStream数据结构包含两个成员变量StreamExecutionEnvironment和Transformation< T >。通过transformation生成当前的DataStream。
- 2.2 通过DataStream 构建Flink作业时,env会将DataStream之间的转换操作存储到env中List<Transformation<?>>,transformations集合,然后基于转换操作去构建Pipeline,用于描述作业的总体计算逻辑,流作业具体实现类是StreamGraph,批作业对应的Pipeline实现类为Plan。
- 2.3 具体转换图
- 2.4 StreamFlatMap
-
- 总结
前言
flink版本号1.18.1
一、DataStream API 应用实例
public class WordCount {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStreamSource<String> DataStreamSource = env.readTextFile("word.text");
SingleOutputStreamOperator<Tuple2<String, Long>> wordAndOne = DataStreamSource.flatMap(new FlatMapFunction<String, Tuple2<String, Long>>() {
@Override
public void flatMap(String value, Collector<Tuple2<String, Long>> out) throws Exception {
String[] words = value.split(" ");
for (String word : words) {
out.collect(Tuple2.