2016-07-15 44 views
0

我知道通常的例程:sc.broadcast(x)如何在Spark Streaming映射函數中廣播變量?

但是,目前Spark Streaming不支持帶檢查點的廣播變量。

官方指南提供了一個解決方案:http://spark.apache.org/docs/latest/streaming-programming-guide.html#accumulators-and-broadcast-variables。但是,此解決方案只能用於foreachRDD函數。

現在我想使用需要以這種方式映射函數(如flatMapToPair)播出大或不可序列化的變量(如KafkaProducer),但由於沒有明顯的RDD變量,我不能檢索星火上下文廣播懶惰評估變量。如果我使用初始上下文創建DStreams或從DStreams獲取的上下文,那麼該任務將不可序列化。

那麼如何在映射函數中使用廣播變量呢?或者有什麼解決方法在映射函數中使用大的或不可序列化的變量?

回答

0

我終於找到解決方案。要使用這些功能,請使用變換功能而不是地圖功能。在轉換函數中,我們手動處理RDD並在其上應用地圖函數,因此我們可以獲取RDD的引用並從中獲取Spark上下文。

相關問題