0


Flink多流处理之connect拼接流

Flink中的拼接流

connect

的使用其实非常简单,就是

leftStream.connect(rightStream)

的方式,但是有一点我们需要清楚,使用

connect

后并不是将两个流给串联起来了,而是将左流和右流建立一个联系,作为一个大的流,并且这个大的流可以使用相同的逻辑处理

leftStream

rightStream

,也可以使用不同的逻辑处理

leftStream

rightStream

.
如下图:
在这里插入图片描述

下面的演示代码也可以通过这个图结合来看,其实

connect

算子最主要的作用就是共享状态,如常用的

广播状态

.

  • 代码
importorg.apache.flink.streaming.api.datastream.ConnectedStreams;importorg.apache.flink.streaming.api.datastream.DataStreamSource;importorg.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;importorg.apache.flink.streaming.api.environment.StreamExecutionEnvironment;importorg.apache.flink.streaming.api.functions.co.CoMapFunction;importjava.util.Arrays;/**
 * @Author: J
 * @Version: 1.0
 * @CreateTime: 2023/8/7
 * @Description: 多流操作-流连接
 **/publicclassFlinkConnect{publicstaticvoidmain(String[] args)throwsException{// 构建流环境StreamExecutionEnvironment env =StreamExecutionEnvironment.getExecutionEnvironment();// 设置并行度
        env.setParallelism(3);// 添加数据源1DataStreamSource<String> sourceStream1 = env.fromCollection(Arrays.asList("a","b","c","d"));// 添加数据源2DataStreamSource<Double> sourceStream2 = env.fromCollection(Arrays.asList(22.2,11.0,6.0,98.0,100.0));// 拼接数据流ConnectedStreams<String,Double> connectedStream = sourceStream1.connect(sourceStream2);// 这里使用map算子作为演示SingleOutputStreamOperator<String> resultStream = connectedStream.map(newCoMapFunction<String,Double,String>(){/**
             * map1作为左流
             **/@OverridepublicStringmap1(String value)throwsException{return"字符串: "+ value;}/**
             * map2作为右流
             **/@OverridepublicStringmap2(Double value)throwsException{return"数字: "+(value *100);}});// 打印结果
        resultStream.print();

        env.execute("Connect Operator");}}
  • 结果
3> 字符串: b
1> 数字: 600.0
2> 字符串: a
3> 数字: 1100.0
2> 数字: 2220.0
2> 字符串: d
2> 数字: 9800.0
3> 数字: 10000.0
1> 字符串: c
标签: flink 大数据

本文转载自: https://blog.csdn.net/AnameJL/article/details/132150300
版权归原作者 飞天小老头 所有, 如有侵权,请联系我们删除。

“Flink多流处理之connect拼接流”的评论:

还没有评论