Как написать 128 МБ паркетный файл с помощью Spark - PullRequest
0 голосов
/ 20 сентября 2018

Чтение CSV-файлов, а затем запись в паркет. Можно ли сохранить 128 МБ паркетных блоков?

Мой текущий код:

filtredDf
    .repartition(96, "mypart")
    .write
    .option("compression", "snappy")
    .option("parquet.block.size", 32 * 1024 * 1024)
    .mode(SaveMode.Append)
    .partitionBy("mypart")
    .parquet(targetDirectory)

parquet.block.size неКажется, что-то влияет.При каждом запуске создается один файл паркета.Насколько я понимаю, я должен поиграть с .repartition и .coalesce, чтобы определить количество созданных файлов, но это предполагает, что я знаю размер данных, которые я пишу ...

Что такое хорошая практикас этим?

1 Ответ

0 голосов
/ 21 сентября 2018

Если вы ориентируетесь на определенный размер для лучшего параллелизма и / или локальности данных, тогда parquet.block.size - действительно правильная настройка.Хотя он не ограничивает размер файла, он ограничивает размер группы строк внутри файлов Parquet.Каждый из этих блоков может обрабатываться независимо друг от друга, и если он хранится в HDFS, можно также использовать локальность данных.

Для проверки внутренней структуры файла Parquet вы можете использовать команду parquet-tools meta.

...