解决:org.codehaus.jackson.JsonParseException:Unexpected end-of-input: expected close marker for OBJECT
今天将json文件导到Hive表中,出现
org.codehaus.jackson.JsonParseException:Unexpected end-of-input: expected close marker for OBJECT
错误,不能解析json文件。
创建Hive表使用row format serde 'org.apache.hadoop.hive.serde2.JsonSerDe'
来解析json文件。
表如下:
create external table json_learn
(
name string comment'名字',
friends array<string> comment'朋友',
students map<string,int> comment'学生信息',
address struct<street:string,city:string,postal_code:int>
) comment'老师信息'
row format serde 'org.apache.hadoop.hive.serde2.JsonSerDe'
;
数据如下:
{
"name": "xiaozhang",
"friends": [
"bingbing"
],
"students": {
"haihai": 18,
"yangyang": 16
},
"address": {
"street": "hui long guan",
"city": "beijing",
"postal_code": 10010
}
}
错误原因:json sered
不能解析格式化的json文件
,需要保障每一行json字符串数据处于一行中。row format也是每次序列化一行数据
解决办法:将json字符串放一行即可
{"name":"dasongsong","friends":["bingbing","lili"],"students":{"xiaohaihai":18,"xiaoyangyang":16},"address":{"street":"hui long guan","city":"beijing","postal_code":10010}}