Hadoop 如何将LinkedIn Json文件导入配置单元外部表?

Hadoop 如何将LinkedIn Json文件导入配置单元外部表?,hadoop,hive,hiveql,Hadoop,Hive,Hiveql,以下是使用API从LinkedIn导出的JSON文件 { "numResults": 21, "people": { "total": 21, "values": { "firstName": "Kshitiz", "headline": "Interbank Derivatives Bank Trea

以下是使用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

使用以下命令创建外部表。还添加了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语句时,请从linkedi中选择*;它显示以下错误

嗯 失败,出现异常java.io.IOException:java.lang.ClassCastException:org.json.JSONObject无法强制转换为[Ljava.lang.Object; 所用时间:0.213秒


显示错误的原因是什么?表的结构中是否有错误?

您使用的SerDe不支持嵌套JSON。您可以尝试先展平JSON,或者 尝试使用:

我也遇到了同样的问题。Panshul是对的,Apache的SerDe不支持嵌套JSON。但我仍然无法使用hive-JSON-SerDe-0.2.jar,至少不能使用hive的最新版本

我发现最好的方法是使用Openx的SerDe库。简而言之,可以找到的工作JAR是json-SerDe-1.3-JAR-with-dependencies.JAR。这个JAR使用的是“STRUCT”,甚至可以忽略一些格式错误的json。在创建表的过程中,包括以下代码:

 ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
 WITH SERDEPROPERTIES ("ignore.malformed.json" = "true")
 LOCATION ...
如果需要,可以从或重新编译。我尝试了第一个存储库,在添加了必要的库之后,它对我来说编译得很好。存储库最近也进行了更新


查看更多详细信息。

如果您能将答案的相关部分发布在此处,以防链接失效,那将是一件非常棒的事情。