split官方好像是不建议使用了,建议使用   Side Outputs

https://ci.apache.org/projects/flink/flink-docs-release-1.7/dev/stream/side_output.html


下面是示例参考


val xOutputTag = OutputTag[String]("xx-side-output")
val xxOutputTag = OutputTag[String]("xx-side-output")

val xxx = xxx.process(new ProcessFunction[String, String] {
  override def processElement(i: String, context: ProcessFunction[String, 
String]#Context,
                              collector: Collector[String]): Unit = {

    .......

    arrData(0) = channel
    arrData(1) = tboxinfo

    collector.collect(parse)

    context.output(channelOutputTag,String.valueOf(arrData(0)))
    context.output(eventOutputTag,arrData(1))

  }
  })

val xStream = ouputStream.getSideOutput(xOutputTag)
val xxStream = ouputStream.getSideOutput(xxOutputTag)

Best,
YunKillere

________________________________
发件人: 戴嘉诚 <a773807...@gmail.com>
发送时间: 2019年3月25日 19:26
收件人: user-zh@flink.apache.org
主题: 答复: flink疑问

使用 Split 算子把流根据特定条件拆分成两个或者更多,然后在用select算子从拆分流中选择对应的拆分流做处理即可。
可以看看文档上,有介绍用法
https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/

发件人: baiyg25...@hundsun.com
发送时间: 2019年3月26日 10:10
收件人: user-zh
主题: 回复: flink疑问

一个算子出来两个流好像不能吧。
要想实现你说的,可以先基于A流过滤生成要进行B算子的流,基于A流过滤生成要进行C算子的流。



baiyg25...@hundsun.com

发件人: IORI
发送时间: 2019-03-26 09:46
收件人: user-zh
主题: flink疑问
请问:数据流通过算子A时,我想分裂成两个数据流,一个数据流进行算子B操作然后sink,另外一个数据流需要先进行算子C操作,再reduce然后sink,请问这种情况应该如何处理?一个operator中能出来两个不同的数据流吗?

回复