Как объединить несколько файлов ORC (принадлежащих каждому разделу) в таблице ORC многораздельного Hive в один большой файл ORC

У меня есть многораздельная таблица ORC в Hive. После загрузки таблицы со всеми возможными разделами я попадаю на HDFS - несколько файлов ORC, то есть в каждом каталоге разделов на HDFS есть файл ORC. Мне нужно объединить все эти файлы ORC в каждом разделе в один большой файл ORC для некоторого варианта использования.

Может ли кто-нибудь предложить мне способ объединить эти несколько файлов ORC (принадлежащих каждому разделу) в один большой файл ORC.

Я пробовал создать новую Non Partitioned ORC таблицу из Partitioned таблицы. Это действительно уменьшает количество файлов, но не до одного файла.

PS: Создание таблицы из другой таблицы - это полностью задача карты и, следовательно, установка количества редукторов на 1 с помощью свойства 'set mapred.reduce.tasks = 1;' не помогает.

Спасибо


person Anchit Jatana    schedule 29.12.2017    source источник


Ответы (1)


Вы можете использовать команду CONCATENATE для объединения небольших файлов орков. Это можно сделать как на уровне таблицы, так и на уровне раздела: синтаксис соответствует orc документация:

пользователи могут запросить эффективное слияние небольших файлов ORC вместе, введя команду CONCATENATE для своей таблицы или раздела. Файлы будут объединены на уровне полосы без повторной сериализации.

ALTER TABLE istari [PARTITION partition_spec] CONCATENATE;
person Amit Kumar    schedule 29.12.2017