Как перестать увеличивать размер паркетных файлов при записи на диск, сделав переразметку

Я пытаюсь объединить небольшие файлы размером менее 512 МБ в каталог hdfs. После объединения размер файлов на диске больше входного. Есть ли способ эффективно контролировать размер.

      Df=spark.read.parquet("/./")
Magic_number=(total size of input file / 512)

Df.repartition(Magic_number).write.save("/./")

Переразметка вызывает много перетасовок, а входные файлы имеют формат паркета.

1 ответ

      import org.apache.spark.util.SizeEstimator
val numBytes = SizeEstimator.estimate(df)

val desiredBytesPerFile = ???

df.coalesce(numBytes / desiredBytesPerFile).write.save("/./")

Это даст вам приблизительно количество байтов записи на файл.

Другие вопросы по тегам