Flink中的拼接流connect
的使用其實非常簡單,就是leftStream.connect(rightStream)
的方式,但是有一點我們需要清楚,使用connect
后并不是將兩個流給串聯(lián)起來了,而是將左流和右流建立一個聯(lián)系,作為一個大的流,并且這個大的流可以使用相同的邏輯處理leftStream
和rightStream
,也可以使用不同的邏輯處理leftStream
和rightStream
.
如下圖:文章來源:http://www.zghlxwxcb.cn/news/detail-636150.html
下面的演示代碼也可以通過這個圖結(jié)合來看,其實connect
算子最主要的作用就是共享狀態(tài),如常用的廣播狀態(tài)
.文章來源地址http://www.zghlxwxcb.cn/news/detail-636150.html
- 代碼
import org.apache.flink.streaming.api.datastream.ConnectedStreams;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.co.CoMapFunction;
import java.util.Arrays;
/**
* @Author: J
* @Version: 1.0
* @CreateTime: 2023/8/7
* @Description: 多流操作-流連接
**/
public class FlinkConnect {
public static void main(String[] args) throws Exception {
// 構(gòu)建流環(huán)境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// 設(shè)置并行度
env.setParallelism(3);
// 添加數(shù)據(jù)源1
DataStreamSource<String> sourceStream1 = env.fromCollection(Arrays.asList("a", "b", "c", "d"));
// 添加數(shù)據(jù)源2
DataStreamSource<Double> sourceStream2 = env.fromCollection(Arrays.asList(22.2, 11.0, 6.0, 98.0, 100.0));
// 拼接數(shù)據(jù)流
ConnectedStreams<String, Double> connectedStream = sourceStream1.connect(sourceStream2);
// 這里使用map算子作為演示
SingleOutputStreamOperator<String> resultStream = connectedStream.map(new CoMapFunction<String, Double, String>() {
/**
* map1作為左流
**/
@Override
public String map1(String value) throws Exception {
return "字符串: " + value;
}
/**
* map2作為右流
**/
@Override
public String map2(Double value) throws Exception {
return "數(shù)字: " + (value * 100);
}
});
// 打印結(jié)果
resultStream.print();
env.execute("Connect Operator");
}
}
- 結(jié)果
3> 字符串: b
1> 數(shù)字: 600.0
2> 字符串: a
3> 數(shù)字: 1100.0
2> 數(shù)字: 2220.0
2> 字符串: d
2> 數(shù)字: 9800.0
3> 數(shù)字: 10000.0
1> 字符串: c
到了這里,關(guān)于Flink多流處理之connect拼接流的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!