2017-09-01 67 views
2

據我所知,廣播對於獲取變量的本地副本很有用。變量的大小必須符合工人的記憶。如何將大型變量廣播到Spark中每個節點的本地磁盤

在我的情況,但是,我想獲得本地副本大變量這是不適合工人的記憶。

如何在Spark中廣播這個不使用廣播函數的大型變量?

+0

是什麼樣的變量呢?你會用變量執行什麼樣的操作? – aclokay

回答

1

問:

在我的情況,但是,我想大變量的本地副本 不適合於工人的記憶。

如何在Spark中廣播不使用廣播功能 的大型變量?

AFAIK這是不可能的(這不會適應工人內存...) 無論是sc.broadcast(..)functions.broadcast(hint)

請注意,有2GB(TorrentBroadcast)的內存限制看到SPARK-6235 - Address various 2G limits

你可以將數據(你想要廣播)提取到hadoop/hbase(或者任何沒有sql)或者可以被memcached,然後你可以查找。

1

大變量它不適合於工人的內存

像拉姆如上所述,如果不適合它的工人的記憶,即使您可以播放它,您也無法使用它,

如果您嘗試使用大型數據集進行查找,則可以在每個工作節點上爲連接池創建數據庫。如果有模型,可以將模型保存到每個工作節點,並在foreachPartition期間讀取文件。根據您的使用情況,可能有其他解決方案。

相關問題