2016-10-04 72 views
1

可以说我们有一个每5秒运行一次的火花流作业。这里我们有一个foreachRDD语句,我们在其中广播一个变量。问题是即使广播变量没有改变,广播变量每次都会播出吗?如果我使用unpersist()更新这个广播变量(意思是参考数据结构,BC变量指向),然后重新广播这个BC变量,那么这也将是只向所有工作人员发布一次或多次,即在每个foreachRDD循环中只发一次?火花流 - 在foreachrdd中广播变量广播始终

回答

1

如果你创建广播里面foreachRDD通话变量:

stream.foreachRDD(rdd => { 
    val broadcast = ??? 
    ... 
}) 

创建这个变量,并转移每批。包裹变量是否更改并不重要。

您还应该记住,广播变量在Spark Streaming(cannot be recovered from checkpoint)中使用时不完全可靠,并且一般广播变量不应该被修改。