Вставить секционированные данные в секционированную таблицу кустов

Я сохранил данные в hdfs, используя Pig Multistorage с идентификатором столбца.

Итак, данные хранятся как

/output/1/part-0000
/output/2/
/output/3/

Теперь я создал секционированную таблицу в улье и хочу загрузить данные из папки / output в эту секционированную таблицу. Есть ли способ добиться этого?


person wazza    schedule 29.10.2015    source источник


Ответы (3)


Сначала вы создаете временную таблицу улья, в которую загружаете все данные из вывода свиньи.
Затем вы загружаете в свою фактическую секционированную таблицу улья из временной таблицы.
Что-то вроде ниже:

FROM emp_external temp INSERT OVERWRITE TABLE emp_partition PARTITION(country) SELECT temp.id,temp.name,temp.dept,temp.sal,temp.country;   

В противном случае вы можете изучить Hcatlog в этом случае.

person Aman    schedule 29.10.2015

не уверен, хотите ли вы вставить данные из выходной папки (созданной из свиньи) в существующую таблицу или загрузить данные из выходной папки в новую секционированную таблицу куста.

Если вы хотите загрузить данные в новую таблицу куста, вы можете создать новую секционированную таблицу, указывающую на выходную папку.

Если вы хотите загрузить данные в существующую таблицу улья, вы можете создать временную таблицу как @Aman mentioed и выполнить вставку в целевую таблицу.

or

Вы можете просто переместить / скопировать файлы в hdfs из вывода / в расположение таблицы куста.

Надеюсь это поможет

person Anil    schedule 29.10.2015

Назначьте схему Hive местоположению вывода свиньи с разделенными столбцами (Изменить таблицу, добавить раздел) в качестве идентификатора столбца. Теперь обе являются таблицами-кустами, и вы можете использовать предложение where над секционированным столбцом для перемещения по данным.

person Vineet Srivastava    schedule 06.11.2015