Я хотел бы перераспределить/объединить мои данные, чтобы они сохранялись в одном файле Parquet на раздел. Я также хотел бы использовать API Spark SQL partitionBy. Так что я мог бы сделать это так:
df.coalesce(1).write.partitionBy("entity", "year", "month", "day", "status")
.mode(SaveMode.Append).parquet(s"$location")
Я проверил это, и это, кажется, не работает хорошо. Это связано с тем, что в наборе данных работает только один раздел, а все разбиение, сжатие и сохранение файлов должно выполняться одним ядром ЦП.
Я мог бы переписать это, чтобы выполнить разбиение вручную (например, используя фильтр с различными значениями разбиения) перед вызовом coalesce.
Но есть ли лучший способ сделать это, используя стандартный Spark SQL API?