Как перестать увеличивать размер паркетных файлов при записи на диск, сделав переразметку
Я пытаюсь объединить небольшие файлы размером менее 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("/./")
Это даст вам приблизительно количество байтов записи на файл.