2015-11-11 4 views
0

У меня есть секция с разделением на Импала, хранящаяся как Паркет. Могу ли я использовать Pig для загрузки данных из этой таблицы и добавления разделов в виде столбцов?Может ли Pig использоваться для LOAD из таблицы Parquet в HDFS с разделением и добавлять разделы в виде столбцов?

В таблице Паркет определяется как:

create table test.test_pig (
    name: chararray, 
    id bigint 
) 
partitioned by (gender chararray, age int) 
stored as parquet; 

И сценарий Свиньи, как:

A = LOAD '/test/test_pig' USING parquet.pig.ParquetLoader AS (name: bytearray, id: long); 

Однако gender и age пропадают при DUMP A. Отображаются только name и id.

Я попытался с:

A = LOAD '/test/test_pig' USING parquet.pig.ParquetLoader AS (name: bytearray, id: long, gender: chararray, age: int); 

Но я получил бы ошибку, как:

ERROR org.apache.pig.tools.grunt.Grunt - ОШИБКА 1031: несовместима схема: левый это "имя: ByteArray, ID: длинный, пол: ByteArray, возраст: ИНТ", права является "именем: ByteArray, ID: длинный"

Надежда получить ADV лед здесь. Спасибо!

ответ

1

Вы должны протестировать библиотеку org.apache.hcatalog.pig.HCatLoader.

Обычно свинец поддерживает чтение/запись в секционированные таблицы;

чтения: заявление

Эта нагрузка будет загружать все разделы указанной таблицы. /* myscript.pig */ A = LOAD 'tablename' USING org.apache.hcatalog.pig.HCatLoader(); ... ... Если требуются только некоторые разделы указанной таблицы, включите оператор фильтра раздела сразу после инструкции загрузки в потоке данных. (В сценарии, однако, оператор фильтра не может сразу следовать его инструкциям загрузки.) Оператор фильтра может включать условия для раздела, а также столбцы без разбиения.

https://cwiki.apache.org/confluence/display/Hive/HCatalog+LoadStore#HCatalogLoadStore-RunningPigwithHCatalog

записи

HCatOutputFormat вызовет на динамическое использование разделов, если это необходимо (если значение ключа не указано) и будет проверять данные, чтобы записать его соответствующим образом.

https://cwiki.apache.org/confluence/display/Hive/HCatalog+DynamicPartitions

Однако, я думаю, что это еще не должным образом протестирована с паркетными файлов (по крайней мере, не по парням Cloudera):

Паркет не был протестирован с HCatalog.Без HCatalog, Pig не может правильно читать динамически разделенные таблицы; это верно для всех форматов файлов.

http://www.cloudera.com/content/www/en-us/documentation/enterprise/latest/topics/cdh_ig_parquet.html

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

  • Нет связанных вопросов^_^