Flink SideOutput 数据分流处理

大数据学习之路

不积跬步,无以至千里。不积小流,无以成江海。——荀子

为什么要数据分流

通常数据流中包含多种类型数据,每种类型数据需要进行不同的分析。因此我们不得不对数据进行分流。

传统的方式我们可能需要对数据流进行多次遍历或者复制,本文学习Flink如何对数据流进行分流处理,这就是文章主角SideOutput

从一个简单例子讲起

下面代码例子,将原始的Integer 数据流 分流为奇数、偶数; 通过getSideOutput 得到两个数据流,一个只包含奇数的数据流,一个只包含偶数的数据流,然后对分流后的数据流进行打印。

Flink SideOutput使用流程

  • 1.定义不同分流的OutputTag

OutputTag<Integer> evenTag = new OutputTag<Integer>("even"){};
OutputTag<Integer> oddTag = new OutputTag<Integer>("odd"){};
  • 2.根据不同的条件将数据输出到不同的 side output

if(value % 2 == 0){
    ctx.output(evenTag,value);
}else {
    ctx.output(oddTag,value);
}
  • 3.使用 SingleOutputStreamOperator#getSideOutput(OutputTagsideOutputTag)方法获取对应的数据流<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值