Объединить файлы разделов ORC на диске? - PullRequest
0 голосов
/ 04 июля 2018

Я использую Spark 2.3 для преобразования некоторых данных CSV в ORC для использования с Amazon Athena; это работает нормально! Athena лучше всего работает с файлами, которые не слишком малы, поэтому после небольшой манипуляции с данными я использую Spark, чтобы объединить разделы в один раздел перед записью на диск, например:

df.coalesce(1).write.orc("out.orc", compression='zlib', mode='append')

В результате получается один файл ORC с оптимальным размером для использования с Athena. Однако этап объединения занимает очень длительное время. Это добавляет около 33% к общему количеству времени для преобразования данных!

Это, очевидно, связано с тем, что Spark не может распараллелить шаг объединения при сохранении в один файл. Когда я создаю столько же разделов, сколько доступно процессоров, запись ORC на диск происходит намного быстрее!

У меня вопрос: можно ли распараллелить запись ORC на диск и затем каким-то образом объединить файлы? Это позволило бы мне распараллелить запись и объединить файлы, не сжимая все на одном процессоре?

...