2014-09-11 49 views
1

我試圖在集羣上運行一個非常大的RDD並將其寫入.csv。它太大了.collect()會中斷,所以我想將RDD保存在每個節點上,然後以某種方式將它們放在一起,因爲順序無關緊要。我的想法是在CSV打印機功能中使用foreach,以便每個部分都寫入它的值,然後我可以手動將這些部分聚集在一起,也許通過FTP。在python中使用帶有Spark RDD的foreach

我是一位具有一定經驗的Spark用戶,但迄今爲止,我從來沒有能夠使RDD的foreach方法做任何有用的事情。當我嘗試運行文檔中給出的示例時,

>>> def f(x): print x 
>>> sc.parallelize([1, 2, 3, 4, 5]).foreach(f) 

我在控制檯上沒有得到任何迴應。我相信這是因爲'打印'是在單獨的節點上執行的,而不是控制檯所在的名稱節點。但是,在那種情況下,我真的不能在foreach函數中看到很多點!

如何在不首先調用collect()函數的情況下獲得每個返回到名稱節點的結果?

注意:我也打開使用saveAsTextFile()RDD函數,但我再也無法使它工作!它似乎創建一個文件夾而不是文本文件,雖然這可能是因爲它們存在於每個節點上而不是集中在一起?

回答