Есть ли способ объединить файлы ORC в HDFS без использования команды ALTER TABLE CONCATENATE? - PullRequest
2 голосов
/ 14 июня 2019

Это моя первая неделя с Hive и HDFS, поэтому, пожалуйста, потерпите меня.

Почти все способы, которые я видел до сих пор для объединения нескольких файлов ORC, предлагают использовать ALTER TABLE с командой CONCATENATE.

Но мне нужно объединить несколько файлов ORC одной и той же таблицы без необходимости ALTER таблицы. Другой вариант - создать копию существующей таблицы, а затем использовать ALTER TABLE, чтобы моя исходная таблица не изменилась. Но я тоже не могу этого сделать из-за избыточности пространства и данных.

Я пытаюсь достичь (в идеале): мне нужно перенести эти ORC по одному файлу на таблицу в облачную среду. Итак, есть ли способ, которым я могу объединить ORC на ходу во время процесса переноса в облако? Может ли это быть достигнуто с / без Hive, может быть, непосредственно с HDFS?

1 Ответ

1 голос
/ 14 июня 2019

Два возможных метода, отличных от ALTER TABLE CONCATENATE:

  1. Попробуйте настроить задачу слияния, подробности см. Здесь: https://stackoverflow.com/a/45266244/2700344

  2. В качестве альтернативы вы можете принудительно настроитьодиночный редукторЭтот метод вполне применим для не слишком больших файлов.Вы можете перезаписать одну и ту же таблицу с помощью ORDER BY, это приведет к включению одного редуктора на последнем этапе ORDER BY.Это будет работать медленно или даже не работать с большими файлами, потому что все данные будут передаваться через один редуктор:

    INSERT OVERWRITE TABLE
    SELECT * FROM TABLE
      ORDER BY some_col; --this will force single reducer

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

...