说明
与 flink1.12.x 拆分流-侧流(side output) 类似,但有区别
有时处理数据,要将 两个流connect连接,然后对 数据 进行不同的处理,就需要 把流进行拆分
使用流程
定义OutputTag
类似一个容器,需要拆分成几个流,就定义几个
OutputTag<Order> ot = new OutputTag<>("说明", TypeInformation.of(Order.class));
使用 CoProcessFunction 来进行拆分
// 对两个流的数据分别做处理
SingleOutputStreamOperator<String> map = connect.process(new CoProcessFunction<String, String, String>() {
@Override
public void processElement1(String value, Context ctx, Collector<String> out) throws Exception {
}
@Override
public void processElement2(String value, Context ctx, Collector<String> out) throws Exception {
}
});
获取数据
DataStream<Order> otDS = soso.getSideOutput(ot);