我可以使用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
1条答案
按热度按时间toiithl61#
错误:失败,出现异常java.io.ioexception:org.apache.hadoop.hive.serde2.serdeexception:行不是有效的json对象-jsonexception:jsonobject文本必须在2[字符3第1行]处以'}'结尾
检查/user/cloudera/empdata/emp.json中提供的json是否有效
您可以通过
检查此链接->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" ] ] }
您提供的jsonkey:cols and value:[ "EmpId", "EmpFirstName", "EmpLastName" ]
以及key :data and value :[ [ 1, "Hannah", "Walton" ], [ 2, "Barrett", "Mendoza" ], [ 3, "Camden", "Kidd" ], [ 4, "Illiana", "Collier" ]
json应该是