2017-09-26 70 views
0

我想在hive.Below中加载json文件是样本json文件。解析配置单元中的json文件

{"Result":[ 
{"Col1":"Key1","Col2":"[email protected]","Col3":"7"}, 
{"Col1":"Key2","Col2":"[email protected]","Col3":"7"}, 
{"Col1":"Key3","Col2":"[email protected]","Col3":"7"}, 
{"Col1":"Key4","Col2":"[email protected]","Col3":"7"} 
]} 

我已经尝试过在蜂巢中创建语句。

create table if not exists sample_json (A Array<struct<"Col1":String,"Col2":string,"Col3":string>>) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION '/a/b/c' 

我无法检索table.I各列中的数据都试图引爆数组,但它仅返回第一个纪录。可请人所说的其实是错呢?

回答

0

创建

CREATE EXTERNAL TABLE testJson (
     Result ARRAY <struct<Col1:String , 
          Col2 : string , 
          Col3 : string > >) 
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' 
LOCATION 's3n://temp_db.db/testjsonstring'; 

查询

SELECT 
     t.col1 
     ,t.col2 
     ,t.col3 
    FROM 
     testJson LATERAL VIEW explode (result) r AS t LIMIT 100 

结果

Col1 Col2   Col3 
Key1 [email protected] 7 
Key2 [email protected] 7 
Key3 [email protected] 7 
Key4 [email protected] 7 
+1

感谢@rbyndoor写入单独加载inpath语句后,它工作。 – user1734980