以下是使用 API 从 LinkedIn 导出的 JSON 文件。
{
"numResults": 21,
"people":
{ "total": 21,
"values":
{ "firstName": "Kshitiz",
"headline": "Interbank Derivatives Bank Treasury",
"id": "aK8sji3rN7",
"industry": "Financial Services",
"lastName": "Jain",
"locations": {"country": {"code": "in"},
"name": "Mumbai Area, India"
},
"numConnections": 500,
"pictureUrl": "http://m3.licT5WVdExyDEYDzE6cp0VwZ"
}
}
}
将上面的 json 文档保存在一个文本文件中,并导入到 hadoop 目录 /sample.xml 中。
使用以下命令创建外部表。还添加了 serde 的 JAR 文件。
create external table linkedi(numResults int,people Struct<total:int,values:Struct<firstName:String,headline:String,id:String,industry:String,lastName:String,locations:Struct<country:Struct<code:String>,name:String>,numConnections:int,pictureUrl:String>>)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.JsonSerde' location '/sample';
运行select statement ( select * from linkedi;)
时显示以下错误。
OK 失败并出现异常 java.io.IOException:java.lang.ClassCastException: org.json.JSONObject 无法转换为 [Ljava.lang.Object; 耗时:0.213 秒
显示错误的原因是什么?表的结构是否有任何错误?