Какие части паркетного файла имеют значение?

У меня есть куча паркетных данных в структуре что-то вроде 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")
Другие вопросы по тегам