2016-02-12 31 views
1

我無法找到廣播變量的大小。由於推送羣集的內存限制,這與我的項目有關。羣集正在YARN上運行。在應用程序管理器中,我可以看到單個執行程序和驅動程序的內存使用情況,但我認爲這些只是持久RDDS。檢查大小廣播變量PySpark

+0

廣播數據只是一個普通的Python對象。它不佔用任何特殊空間AFAIK。你應該能夠簡單地估計它的本地大小('sys.getsizeof'應該足夠用於本地對象)的大小,並且將它乘以許多執行者。 – zero323

回答

2

Spark使用pickle來序列化/反序列化廣播變量。你可能想嘗試的檢查鹹菜一件事轉儲的大小,例如:

>>> import cPickle as pickle 
>>> data = list(range(int(10*1e6))) # or whatever your broadcast variable is 
>>> len(pickle.dumps(data)) 
98888896 # the measurement of the size of your broadcast variable, in bytes 

至於影響到羣集的內存限制廣播的變量,一個previous question of mine具有zero323一些有用的技巧。

+1

我認爲pyspark在java中序列化的東西?你確定這正是pyspark如何序列化的東西@captaincapsaicin – Hunle

+1

https://github.com/apache/spark/blob/master/python/pyspark/cloudpickle.py向我表明PySpark使用圍繞pickle序列化的包裝。 – captaincapsaicin