У меня большой набор данных, df
, состоящий из событий.Я хочу выписать его, разделив по годам / месяцам / датам / часам, и чтобы каждый результирующий раздел содержал только файл.
Вот фрагмент кода:
df.partitionBy("event_year", "event_month", "event_day", "event_hour").
mode(SaveMode.Overwrite).
parquet(s"${output_data_root}/tmp/")
Неясно, чтоделать с df
до этой операции, чтобы получить один файл, так как неясно, как взаимодействуют partition(COL)
и coalesce
.То есть, что происходит, когда я делаю:
df.repartition(col("year"), col("month"), col("day"), col("event_hour")).coalesce(1)
(или наоборот)
Это не сработает просто до coalesce(1)
(набор данных слишком большой), но изчто я могу сказать, repartition(COL)
не обязательно приведет к одному разделу на набор столбцов.