在配置单元表中读取json数据

cbwuti44  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(413)

我可以使用json-serde创建配置单元表 org.openx.data.jsonserde.JsonSerDe 但是当我从配置单元表读取数据时,我无法读取。

hive> create table emp (EmpId int , EmpFirstName string , EmpLastName string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe';
OK
Time taken: 2.148 seconds

hive> LOAD DATA INPATH '/user/cloudera/EmpData/emp.json' INTO table emp;
Loading data to table employee.emp
chgrp: changing ownership of 'hdfs://quickstart.cloudera:8020/user/hive/warehouse/employee.db/emp/emp.json': User does not belong to supergroup
Table employee.emp stats: [numFiles=1, totalSize=4163]
OK
Time taken: 1.141 seconds

hive> select * from emp;
OK
Failed with exception java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException: Row is not a valid JSON Object - JSONException: A JSONObject text must end with '}' at 2 [character 3 line 1]
Time taken: 0.504 seconds
toiithl6

toiithl61#

错误:失败,出现异常java.io.ioexception:org.apache.hadoop.hive.serde2.serdeexception:行不是有效的json对象-jsonexception:jsonobject文本必须在2[字符3第1行]处以'}'结尾
检查/user/cloudera/empdata/emp.json中提供的json是否有效
您可以通过

ALTER TABLE table emp SET SERDEPROPERTIES ( "ignore.malformed.json" = "true");

检查此链接->https://github.com/rcongiu/hive-json-serde
编辑:这是无效的json { "cols": [ "EmpId", "EmpFirstName", "EmpLastName" ], "data": [ [ 1, "Hannah", "Walton" ], [ 2, "Barrett", "Mendoza" ], [ 3, "Camden", "Kidd" ], [ 4, "Illiana", "Collier" ] ] } 您提供的json key:cols and value:[ "EmpId", "EmpFirstName", "EmpLastName" ] 以及 key :data and value :[ [ 1, "Hannah", "Walton" ], [ 2, "Barrett", "Mendoza" ], [ 3, "Camden", "Kidd" ], [ 4, "Illiana", "Collier" ] json应该是

{"EmpId":1,"EmpFirstName":"Hannah","EmpLastName":"Walton"}
{"EmpId":2,"EmpFirstName":"Barrett","EmpLastName":"Mendoza"}
{"EmpId":3,"EmpFirstName":"Camden","EmpLastName":"Kidd"}

相关问题