[英]How to broadcast a variable in a Spark Streaming mapping function?
我知道通常的例程: sc.broadcast(x)
。
但是,當前Spark Streaming不支持帶有檢查點的廣播變量。
官方指南提供了一種解決方案: http : //spark.apache.org/docs/latest/streaming-programming-guide.html#accumulators-and-broadcast-variables 。 但是,此解決方案只能用於foreachRDD函數。
現在,我想使用需要以這種方式在映射函數(例如flatMapToPair
)中廣播的較大或KafkaProducer
序列化的變量(例如flatMapToPair
),但是由於沒有可見的RDD變量,因此無法檢索Spark上下文來廣播延遲-評估的變量。 如果我使用初始上下文創建DStream或從DStream檢索的上下文,則該任務無法序列化。
那么如何在映射函數中使用廣播變量? 還是在映射函數中使用較大或不可序列化的變量有任何解決方法?
我終於找到了解決方案。 要使用這些功能,請使用轉換功能而不是地圖功能。 在轉換函數中,我們手動處理RDD並在其上應用映射函數,因此我們可以獲得RDD的引用,從而從中獲取Spark上下文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.