Контрольный номер целевых файлов паркета - PullRequest
0 голосов
/ 20 ноября 2018

У меня ~ 250 папок.Каждая папка в день.Каждая папка содержит 24 паркетных файла.Мне нужно прочитать их все, запустить на них функцию и написать их после изменения функции.

При записи я делаю это:

df
  .repartition('date)
  .write
  .partitionBy("date")
  .mode(SaveMode.Overwrite)
  .parquet(outputPath)

Но это "проигрывает"оригинал разделен на 24 части каждой даты и записывает один файл за дату.Есть ли возможность разбивать каждый день на n частей?

1 Ответ

0 голосов
/ 20 ноября 2018

Вы можете указать количество целевых разделов при выполнении repartition - scaladoc

df
  .repartition(numPartitions = 24, 'date)
  .write
  .partitionBy("date")
  .mode(SaveMode.Overwrite)
  .parquet(outputPath)

Редактировать

Я только что понял, numPartitions - это числоитоговых разделов всего.Таким образом, вы можете попытаться передать это число дней, умноженное на количество разделений, которое вы хотите на файл, например, numPartitions = 24 * 250 - однако, нет никакой гарантии, что во всех днях будет ровно 24 разделения, особенно если суммаданных за каждый день резко отличается.

...