0
点赞
收藏
分享

微信扫一扫

Flink常用API之转换算子的Connect算子

Connect,CoMap,CoFlatMap[DataStream ->ConnectedStream->DataStream]
Connect 算子主要是为了合并两种或者多种不同数据类型的数据集,合并后会保留原来 数据集的数据类型。例如:dataStream1 数据集为(String, Int)元祖类型,dataStream2 数据集为 String 类型,通过 connect 连接算子将两个不同数据类型的流结合在一起,形成格式 为 ConnectedStreams 的数据集,其内部数据为[(String, Int), String]的混合数据类型,保 留了两个原始数据集的数据类型。

需要注意的是,对于 ConnectedStreams 类型的数据集不能直接进行类似 Print()的操 作,需要再转换成 DataStream 类型数据集,在 Flink 中 ConnectedStreams 提供的 map()方 法和 flatMap()

package transformation

import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment

/**
* @Author yqq
* @Date 2021/12/26 16:22
* @Version 1.0
*/
object Transformation01 {
def main(args: Array[String]): Unit = {
val en = StreamExecutionEnvironment.getExecutionEnvironment
en.setParallelism(1)
import org.apache.flink.streaming.api.scala._
val stream1: DataStream[(String, Int)] = en.fromElements(("a", 1), ("b", 2), ("C", 3))
val stream2: DataStream[String] = en.fromElements(("a"),("b"))
val result: ConnectedStreams[(String, Int), String] = stream1.connect(stream2)
//使用CoMapo或CoFlatMap
val value: DataStream[(String, Int)] = result.map(
//第一个处理函数
t => {
(t._1, t._2)
},
//第二个函数处理
t => {
(t, 0)
}
)
value.print()
en.execute()
}
}

Flink常用API之转换算子的Connect算子_scala
注意:
Union 之前两个流的类型必须是一样,Connect 可以不一样,在之后的 coMap 中再去调整成为一样的。
Connect 只能操作两个流,Union 可以操作多个。


举报

相关推荐

0 条评论