Какие части паркетного файла имеют значение?
У меня есть куча паркетных данных в структуре что-то вроде col1=1/col2=2/col3=3/part-00000-33b48309-0442-4e86-870f-f3070268107f-c000.snappy.parquet
Я прочитал о том, что я мог найти, и кажется довольно ясным, что означает каждая часть имени файла - part-00000
приращения на файл в разделе, c000
это что-то, что связано с другой частью конфигурации вывода, а остальное - UUID для предотвращения коллизий во время параллельной записи.
Мне интересно - какие части имени файла я могу изменить или избавиться? В частности, безопасно ли просто удалить UUID?
(Большая мотивация заключается в том, что мне нужно со временем добавлять данные в существующее хранилище, но я хочу сохранить N файлов на раздел, и, поскольку вы не можете перезаписывать файлы, которые вы читаете, мне нужно подготовить новые файлы, а затем скопируйте их, и это будет проще с известными именами файлов)
1 ответ
Может быть, вы можете применить решение от Spark паркетной перегородки: большое количество файлов
data
.repartition($"key",floor($"row_number"/N)*N)
.write.partitionBy("key")
.parquet("/location")