1. 程式人生 > >python spark中parquet檔案寫到hdfs,同時避免太多的小檔案(block小檔案合併)

python spark中parquet檔案寫到hdfs,同時避免太多的小檔案(block小檔案合併)

    在pyspark中,使用資料框的檔案寫出函式write.parquet經常會生成太多的小檔案,例如申請了100個block,而每個block中的結果

只有幾百K,這在機器學習演算法的結果輸出中經常出現,這是一種很大的資源浪費,那麼如何同時避免太多的小檔案(block小檔案合併)?

    其實有一種簡單方法,該方法需要你對輸出結果的資料量有個大概估計,然後使用Dataframe中的coalesce函式來指定輸出的block數量

即可,具體使用程式碼如下:

df.coalesce(2).write.parquet(path,mode)

這裡df是指你要寫出的資料框,coalesce(2)指定了寫到2個block中,一個block預設128M,path是你的寫出路徑,mode是寫出模式,常用的是

"overwrite"和"append"。


有任何問題想跟我交流,請加qq群636866908(Python&大資料)與我聯絡,或者加qq群456726635(R語言&大資料分析)也可。