我有一個目錄,其中包含一堆大約 500mb 的 deflate 壓縮 CSV 檔案。我想將它們拆分為更小的 deflate 壓縮 CSV 檔案。例如,我有 3 500mb 個檔案,我希望它們在寫入后變成 15 100mb 個檔案。我目前正在做這樣的事情:
spark.read.csv("/input/path")
.repartition(15)
.write.option("compression", "deflate").csv("output/path")
但這會導致整個不必要的洗牌。有沒有辦法讓它寫 15 個檔案而不經歷所有這些麻煩?
uj5u.com熱心網友回復:
簡而言之,沒有。對此有一個開放的功能請求。Spark 使用 spark 內部結構,創建磁區是通過 shuffle 完成的。如果您真的想在不改組的情況下拆分此檔案,請使用一些不是 spark 的代碼來執行此操作。但真的不值得花時間。
離題但仍然有價值的反饋-> @OneCricketeer 是正確的,您應該考慮一種性能更高的不同檔案格式。(Parquet/Orc)隨著資料大小的增加,它將大大提高性能,并且應該是您首先想到的到檔案格式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/424056.html
上一篇:如何在hive中運行子查詢
