2014-10-13 2 views
0

Я храню данные в Hadoop в соответствии с датой их создания, поэтому у меня есть несколько каталогов на HDFS, которые создаются на основе формата /data/{year}/{month}/{day}.
Я хочу загрузить эти данные в Hive (периодически) и создать соответствующие разделы. На данный момент я экспериментировал с несколькими подходами, как один нижеДанные о загрузке кустов из нескольких каталогов и динамическое создание разделов

CREATE EXTERNAL TABLE tablename (...) 
PARTITIONED BY (year STRING, month STRING, day STRING) 
LOCATION '/data'; 

ALTER TABLE tablename ADD PARTITION(year='2014', month='10', day='13') LOCATION '/data/2014/10/13'; 

, но при таком подходе я должен вручную создать каждый раздел с помощью команды ALTER. Есть ли способ автоматизировать и параметризовать этот процесс (и включить его в рабочий процесс) для динамической загрузки данных в разделы Hive для каждого из подкаталогов?

+0

Проверьте, поможет ли здесь решение ... http://stackoverflow.com/questions/13148187/hive-loading-in-partitioned-table –

ответ

0

Как насчет msck ремонтный стол? Это должно автоматически загружать все разделы в подкаталог. См. Здесь: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-RecoverPartitions(MSCKREPAIRTABLE)

+1

Спасибо, что было именно то, что мне было нужно, единственное, что мне нужно было сделать, это переименовать входные каталоги для работы (формат/partitionkey = partitionvalue/...) – user3793101

+0

Я не думаю, что любая команда может сделать это автоматически. Это может потребоваться переименовать при вставке самих данных. – Amar

+0

Да, конечно, я просто сделал это, и это сработало. Просто написал, что для полноты, если у кого есть те же проблемы – user3793101

0

Для создания динамического раздела в вашем случае, вам нужно сделать следующее: при определении столбцов раздела

  1. На сегодняшний день - Определите раздел как день (дата строки).
  2. За месяц - Определите раздел как месяц (строка date)
  3. В течение года - укажите год (дата строки).

Надеюсь, вы поняли концепцию. Надеюсь, это вам поможет

+0

Вещь - я могу создать разделы, мои проблема в том, что я должен делать это каждый день вручную (с описанным выше процессом). В идеале я хотел бы каким-то образом создать некоторую автоматизацию (например, скрипт) для загрузки моих новых данных в Hive everyday – user3793101