2016-10-04 67 views
1

可以說我們有一個每5秒運行一次的火花流作業。這裏我們有一個foreachRDD語句,我們在其中廣播一個變量。問題是即使廣播變量沒有改變,廣播變量每次都會播出嗎?如果我使用unpersist()更新這個廣播變量(意思是參考數據結構,BC變量指向),然後重新廣播這個BC變量,那麼這也將是隻向所有工作人員發佈一次或多次,即在每個foreachRDD循環中只發一次?火花流 - 在foreachrdd中廣播變量廣播始終

回答

1

如果你創建廣播裏面foreachRDD通話變量:

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

創建這個變量,並轉移每批。包裹變量是否更改並不重要。

您還應該記住,廣播變量在Spark Streaming(cannot be recovered from checkpoint)中使用時不完全可靠,並且一般廣播變量不應該被修改。