Flink学习 - 10. Flink Side Output 侧输出

Side Output概念

Side Output简单来说就是在你程序执行过程中,你需要将从主流stream中获取额外的流的方式,也就是在处理一个数据流的时候,将这个流中的不同的业务类型或者不同条件的数据分别输出到不同的地方。

如果采用filter算子对数据做筛选,也可以满足这种需求,但是这样会造成数据流被复制多分,造成不必要的性能浪费。

Side Output在拆分数据流时,然后从每个流过滤出你不想拥有的数据,非常有用。

摘自 : Flink的处理机制以及侧输出应用
通常我们说sideoutput的使用场景如下:

  • 分流 : 使用split函数
  • 异常值捕获(空值,字段缺失,异常值过大等场景),滞后的数据处理等 : 使用sideoutput

举个例子来说明:

比如现在有一篇文章吧,单词长度不一,但是我们想对单词长度小于5的单词进行wordcount操作,同时又想记录下来哪些单词的长度大于了5,那么我们该如何做呢?

普遍的做法是:

datastream.filter(word.length>=5); //获取不统计的单词,也即是单词长度大于等于5。

datastream.filter(word.length <5);// 获取需要进行wordcount的单词。

这样数据,然后每次筛选都要保留整个流,然后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值