Apache Flink:使用CoFlatMapFunction合并两个DataStream

时间:2018-03-09 08:27:02

标签: apache-flink flink-streaming

我正在尝试合并两个相同数据类型的流。我看到CoFlatMapfunction并尝试了,但我收到以下错误:

  

“未指定的值参数”。

代码是用Scala编写的

val eventsTypeOne: DataStream[Option[Event]] =  patternStream1.select(pattern => selectFn1(pattern.toMap))
val eventsTypeTwo: DataStream[Option[Event]] = patternStream2.select(pattern => selectFn2(pattern.toMap))

eventsTypeOne.connect(eventsTypeTwo).flatMap(new CoFlatMapFunction[Option[Event], Option[Event], Option[Event]] {
  override def flatMap1(eventTypeOne: Option[Event], out: Collector[Option[Event]]): Unit = {
    out.collect(eventTypeOne)
  }

  override def flatMap2(eventTypeTwo: Option[Event], out: Collector[Option[Event]]): Unit = {
    out.collect(eventTypeTwo)
  }
})
}

如何正确使用CoFlatMapFunction?或者是否有更优雅的方式来合并两个数据流?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您可以使用union() operator来实现相同的功能。 Union允许合并两个相同类型的流。