2017-03-02 92 views
0

我已經RDD這樣如何將整個rdd構建爲一個元素?

A,1335952933,1 
A,1335953754,0 
A,1335994294,1 
A,1335995228,0 
B,1336001513,1 
B,1336002622,0 
B,1336006905,1 
B,1336007462,0 


rdd.first 
A,1335952933,1 

,當我得到rdd.first它表明A,1335952933,1但我想整個RDD爲用逗號這樣

rdd.first 
A,1335952933,1,A,1335953754,0,A,1335994294,1,A,1335995228,0,B,1336001513,1,B,1336002622,0, 
B,1336007462,0 

分隔的一個元素我可以使用collect和mkString scala來做到這一點,但我聽說collect在大型數據集中不是一個好的解決方案有沒有其他方法可以使用rdd操作來完成此操作?

回答

0

,但我想整個RDD作爲一個元素

collect是不完全推薦這個原因。 collect將RDD集合的全部數據傳輸到驅動程序應用程序(該程序在單個機器上運行),這對於大型數據集來說是不可能的,因爲您將發生內存不足異常。所以如果你真的想要這樣做,你可以採用collectmkString的路線,並避免在大型RDD上使用它。

+0

非常感謝你的回答我得到了你解釋的觀點 –

0

collect不建議使用,因爲它會導致整個數據集被傳送給驅動程序。但是,無論如何,您的情況需要轉移,因此collect & mkString這裏沒有任何問題。

+0

非常感謝你的回答我得到了你解釋的觀點 –

相關問題