2016-10-05 29 views
-1

我有一套我廣播的大變量。這些變量是從集羣數據庫加載的。是否可以通過工作節點從數據庫分配負載,然後讓每個節點都將其特定變量廣播到所有節點以供後續的映射操作使用?Spark worker節點廣播變量可能嗎?

謝謝!

回答

0

好的,所以答案似乎是否定的。

調用sc.broadcast(someRDD)會導致錯誤。你必須首先收集()回驅動程序。

0

廣播變量通常傳遞給工作人員,但我可以告訴你我在python中做了類似的情況。

如果您知道總行數,您可以嘗試創建該長度的RDD,然後對其執行映射操作(將分配給工作人員)。在地圖上,工作人員正在運行一個函數來獲取一些數據(不知道如何讓他們獲得不同的數據)。

每個工作人員都會通過撥打電話來檢索所需的數據。然後,您可以執行collectAsMap()來獲取字典並將其廣播給所有工作人員。

但請記住,您需要在每位工作人員上進行客戶端請求的所有軟件依賴性。您還需要牢記套接字使用情況。我只是做了類似的查詢API,並沒有看到套接字的增加,儘管我正在定期發送HTTP請求。不確定....

+0

對於來自數據庫的數據創建分區函數非常簡單,以確保每個工作人員只獲取唯一的子集。有一個驅動程序進程單線程從數據庫中提取所有數據只是爲了將數據廣播到集羣上似乎很愚蠢。爲什麼不讓集羣完成這項工作? – ThatDataGuy

相關問題