flink广播变量不能复用吗?
来源:4-38 本章节小结及作业
Amourxxxx
2021-03-01
val broadVar = env.fromCollection(List(Room("a", 11.2), Room("b", 22.3)))
val data = env.fromCollection(List("a", "b"))
val ds1 = data.map(new RichMapFunction[String, String] {
override def open(parameters: Configuration): Unit = {
val broadCast = getRuntimeContext.getBroadcastVariable[String]("roomBroadcast")
println(broadCast.size())
}
override def map(in: String): String = {in}
}).withBroadcastSet(broadVar, "roomBroadcast")
ds1.print()
data.map(new RichMapFunction[String, String] {
override def open(parameters: Configuration): Unit = {
val broadCast = getRuntimeContext.getBroadcastVariable[String]("roomBroadcast")
println(broadCast.size())
}
override def map(in: String): String = {in}
}).print()
在第一个算子里传递了广播变量后,在第二个算子没有传递,就不能复用使用之前广播好的变量吗?
写回答
2回答
-
这么测试没用过,你的代码是同一个数据集来的,直接一次能处理掉不
10 -
Amourxxxx
提问者
2021-03-02
这种场景肯定是不能一次性处理的啊。
比如有个字典表。广播后,在多处逻辑都需要使用。这种情况应该很常见的。然后在这里我貌似只能,每个需要使用到的算子都广播一次?132021-03-02
相似问题