DataFrame
特定のパーティショニングに従って S3 に書き込む必要があります。コードは次のようになります。
dataframe
.write
.mode(SaveMode.Append)
.partitionBy("year", "month", "date", "country", "predicate")
.parquet(outputPath)
データをかなり多数のpartitionBy
フォルダー (~400) に分割し、それぞれにほんの少しのデータ (~1GB) を入れます。ここで問題が発生します。デフォルト値spark.sql.shuffle.partitions
は 200 であるため、各フォルダー内の 1GB のデータは 200 個の小さな寄木細工ファイルに分割され、合計で約 80000 個の寄木細工ファイルが書き込まれます。これは多くの理由で最適ではなく、回避したいと考えています。
もちろん、spark.sql.shuffle.partitions
を 10 などのはるかに小さい数に設定することもできますが、この設定は、結合と集計のシャッフルのパーティション数も制御することを理解しているため、これを変更したくありません。
書き込まれるファイルの数を制御する別の方法があるかどうかは誰にもわかりませんか?