2016-09-27 49 views
0

我創建了一個存儲有Avro文件格式的配置表。我想用下面豬裝入同一蜂巢table命令豬 - 讀取存儲爲Avro的Hive表

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

感謝您的答覆。你的例子正在工作。我在我的hive_avro表中使用了複雜的數據類型(Array,Map和Struct)。看起來像Struct數據類型導致了問題。有什麼想法嗎? –

+0

豬中支持複雜的數據類型。可以創建另一個關係使用LIMIT 5並轉儲該關係。 hive_avro_table是配置單元表還是視圖?豬不支持視圖。如果hive_avro_table是位置上的外部表檢查權限,並且也是/ tmp –