大数据全系列 教程
1869个小节阅读:467.3k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Connect算子主要是为了合并两种不同数据类型的数据集,合并后会保留原来数据集的数据类型。例如:dataStream1数据集为(String, Int)元祖类型,dataStream2数据集为Int类型,通过connect连接算子将两个不同数据类型的流结合在一起,形成格式为ConnectedStreams的数据集,其内部数据为[(String, Int), Int]的混合数据类型,保留了两个原始数据集的数据类型。
xxxxxxxxxx
package com.itbaizhan.flink.scala.transformation
import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
object ConnectDemo {
def main(args: Array[String]): Unit = {
val env = StreamExecutionEnvironment.getExecutionEnvironment
env.setParallelism(1)
//添加隐式转
import org.apache.flink.streaming.api.scala._
//创建两个不同类型的数据集
val dataStream1: DataStream[(String, Int)] = env.fromElements(("a", 3), ("d", 4), ("c", 2))
val dataStream2: DataStream[Int] = env.fromElements(1, 2, 4)
//连接两个数据集
//ConnectedStreams类型的数据集不能直接进行类似print()操作
val resultCS: ConnectedStreams[(String, Int), Int] = dataStream1.connect(dataStream2)
//需要将之转化为DataStream类型数据集,在Flink中ConnectedStreams提供了map()和flatMap()
val resultDS: DataStream[(Any, Int)] = resultCS.map(
data1 => {
(data1._1, data1._2)
},
data2 => {
(data2, 0)
}
)
resultDS.print()
env.execute("ConnectDemo")
}
}
输出:
(1,0) (2,0) (a,3) (4,0) (d,4) (c,2)
注意Union和Connect的区别:
union之前两个流的类型必须是一样,Connect可以不一样,在之后的map中再去调整成为一样的。
connect只能操作两个流,union可以操作多个。