請教一個問題:spark資料清洗的結果為RDD[(String, String)]型別的rdd,在這個RDD中,每一個元素都是
一個元組。元組的key值是檔案名,value值是檔案內容,我現在想把整個RDD保存在HDFS上,讓RDD中的每一
個元素保存為一個檔案,其中key值作為檔案名,而value值作為檔案內容。
應該如何實作呢?
RDD好像不支持遍歷,只能通過collect()方法保存為一個陣列,再進行遍歷,但是這樣可能會把記憶體撐爆,
目前的做法是先把RDD通過saveAsTextFile方法保存在HDFS上,然后再使用FSDataInputStream輸入流對保存
后的part檔案進行遍歷讀取,使用輸出流寫到HDFS上,這樣很耗時。
請問有沒有好一點的方法,可以直接把RDD的內容寫到HDFS上呢?
uj5u.com熱心網友回復:
每個元素都保存成一個檔案?還是說想要每個相同的key的所有元素生成到以key為檔案名,values為內容?uj5u.com熱心網友回復:
foreach算子,用檔案流處理不要用saveAsTextFile了轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/54871.html
標籤:Spark
上一篇:spark yarn集群報錯
下一篇:spark streaming讀取資料并進行詞頻統計報錯java.lang.NoClassDefFoundError: net/jpountz/util/Saf
