注意:
重要的是每行必须是一个完整的JSON,一个JSON不能跨越多行,也就是说,serde不会对多行的Json有效。 因为这是由Hadoop处理文件的工作方式决定,文件必须是可拆分的,例如,Hadoop将在行尾分割文本文件。
-
// this will work
-
{ "key" : 10 }
-
// this will not work
-
{
-
"key" : 10
-
}
2. 下载Jar
使用之前先下载jar:
http://www.congiu.net/hive-json-serde/
如果要想在Hive中使用JsonSerde,需要把jar添加到Hive类路径中:
add jar json-serde-1.3.7-jar-with-dependencies.jar;
3. 与数组使用
源数据:
-
{"country":"Switzerland","languages":["German","French","Italian"]}
-
{"country":"China","languages":["chinese"]}
Hive表:
-
CREATE TABLE tmp_json_array (
-
country string,
-
languages array<string>
-
)
-
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
-
STORED AS TEXTFILE;
-
LOAD DATA LOCAL INPATH '/home/xiaosi/a.txt' OVERWRITE INTO TABLE tmp_json_array;
使用: