2016-09-27 4 views
0

Я создал таблицу улья, хранящуюся в формате Avro. Я пытаюсь загрузить тот же улей таблицу, используя ниже Свиньи командыСвинья - таблица чтения Hive, хранящаяся как Avro

pig -useHCatalog; 
hive_avro = LOAD 'hive_avro_table' using org.apache.hive.hcatalog.pig.HCatLoader(); 

я получаю «не удалось прочитать из hive_avro_table» ошибка, когда я попытался отобразить «hive_avro» с помощью команды DUMP.

Пожалуйста, помогите мне решить эту проблему. Заранее спасибо

ответ

0
create table hivecomplex 
(name string, 
phones array<INT>, 
deductions map<string,float>, 
address struct<street:string,zip:INT> 
) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
COLLECTION ITEMS TERMINATED BY '$' 
MAP KEYS TERMINATED BY '#' 
STORED AS AVRO 
; 

hive> select * from hivecomplex; 
OK 
John [650,999,9999] {"pf":500.0} {"street":"pleasantville","zip":88888} 
Time taken: 0.078 seconds, Fetched: 1 row(s) 

Now for the pig 

pig -useHCatalog; 

a = LOAD 'hivecomplex' USING org.apache.hive.hcatalog.pig.HCatLoader(); 
dump a; 

ne.util.MapRedUtil - Total input paths to process : 1 
(John,{(650),(999),(9999)},[pf#500.0],(pleasantville,88888)) 
+0

Спасибо за ответ. Ваш пример работает. Я использовал сложные типы данных (Array, Map и Struct) в моей таблице hive_avro. Похоже, что тип данных Struct вызывает проблему. Есть идеи? –

+0

Сложные типы данных поддерживаются свиньями. Может быть создано другое отношение, используйте LIMIT 5 и дамп эти отношения. Является ли hive_avro_table таблицей или таблицей улей? вид не поддерживается у свиньи. Если hive_avro_table - это разрешение на проверку внешней таблицы на месте, а также для/tmp –