簡體   English   中英

如何在Spark Streaming映射函數中廣播變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM