2016-06-03 2 views
0

Я использую Hadoop и сталкиваюсь с ужасной проблемой большого количества файлов. Мне нужно иметь возможность создавать хар-архивы из существующих разделов улей и запрашивать их одновременно. Тем не менее, Hive, по-видимому, поддерживает только архивирование разделов только в управляемых таблицах, а не внешних таблицах, что довольно грустно. Я пытаюсь найти обходное решение для этого, вручную архивируя файлы внутри каталога раздела в HAR, используя инструмент архива hadoop. Теперь мне нужно настроить куст, чтобы он мог напрямую запрашивать данные, хранящиеся в этих архивах, вместе с обычными данными, хранящимися в каталогах разделов. Обратите внимание, что мы используем только внешние таблицы.Запрос данных из архивов har - Apache Hive

Пространство имен для доступа к файлам в созданном разделе-har соответствует пути hdfs раздела dir. Например, Например, файл в HDFS:

hdfs:///user/user1/data/db1/tab1/ds=2016_01_01/f1.txt 

может после архивирования доступен как:

har:///user/user1/data/db1/tab1/ds=2016_01_01.har/f1.txt 

Будет ли возможность для улья запросить Хары из внешней таблицы? Пожалуйста, предложите способ, если да.

С наилучшими пожеланиями

ответ

0

На практике грань между «управляемым» и «внешними» таблицами очень тонкая.
Мое предложение:

  • создать «управляемую» таблицу
  • добавить явно разделяет на несколько дней в будущем, но с специальных местах - то есть каталоги, ваш внешний процесс предполагает использовать
  • позволяет внешнему процессу выгружать его файл непосредственно на уровне HDFS - они автоматически экспонируются в запросах на улей «управляются» или нет
    (Metastore не отслеживает отдельные файлы и блоки, они обнаруживаются по каждому запросу; обратите внимание, что вы можете запустить резервное копирование &, если хотите, до тех пор, пока вы не испортите структуру каталогов, не выполняйте операции восстановления на уровне HDFS)
  • , когда раздел «холодный», и вы уверены, что там не будет другого файла, run a Hive command to archive the partition то есть перемещение небольших файлов в один HAR + пометить раздел как «архивировать» в Metastore

Бонус: легко разархивировать ваш раздел в Шуе (в то время как нет hadoop unarchive команды AFAIK).

Предостережение: это «управляемая» таблица, поэтому не забывайте ничего DROP, если вы не смело перемещаете свои данные из управляемых улей каталогов.

Смежные вопросы