你得到多個文件在一個文件夾,因為火花寫每個洗牌分區就地“一部分…”文件,以避免網絡I / O。您可以使用合並來把所有的緩步到單個分區並寫出來一個文件,但注意性能的影響
df.coalesce (1) .write.format (csv) .option .save(“標題”、“true”) (“singlefile.csv”)
隻使用
df.coalesce (1) .write.csv(“文件,路徑”)
df.repartition (1) .write。csv(“文件路徑)
當你準備寫DataFrame,第一次使用火花再分配()和合並()將所有分區的數據合並到單個分區,然後將它保存到一個文件中。這仍然創建一個目錄並寫一個部分文件在一個目錄,而不是多個部分文件。
合並分區()和()火花轉換操作洗牌,來自多個分區成一個分區的數據。使用合並(),因為它性能更好,使用較少的資源與再分配()。
注意:您必須非常小心當使用火花合並分區()和()方法在較大的數據集,因為他們是昂貴的操作,可以把OutOfMemory錯誤。