org.openx.data.jsonserde.json.JSONObject无法强制转换为org.openx.data.jsonserde.json.JSONArray

时间:2015-05-01 11:30:55

标签: json hadoop hive hiveql

我正在尝试从hive读取json文件。

我使用JsonSerde api加载json但收到错误

  

... 16更多
  引起:java.lang.ClassCastException:org.openx.data.jsonserde.json.JSONObject无法强制转换为org.openx.data.jsonserde.json.JSONArray       at org.openx.data.jsonserde.objectinspector.JsonListObjectInspector.getList(JsonListObjectInspector.java:38)
      at org.apache.hadoop.hive.serde2.SerDeUtils.buildJSONString(SerDeUtils.java:297)
      在org.apache.hadoop.hive.serde2.SerDeUtils.getJSONString(SerDeUtils.java:197)
      在org.apache.hadoop.hive.serde2.DelimitedJSONSerDe.serializeField(DelimitedJSONSerDe.java:60)
      在org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.doSerialize(LazySimpleSerDe.java:422)
      在org.apache.hadoop.hive.serde2.AbstractEncodingAwareSerDe.serialize(AbstractEncodingAwareSerDe.java:50)
      在org.apache.hadoop.hive.ql.exec.DefaultFetchFormatter.convert(DefaultFetchFormatter.java:71)
      在org.apache.hadoop.hive.ql.exec.DefaultFetchFormatter.convert(DefaultFetchFormatter.java:40)
      在org.apache.hadoop.hive.ql.exec.ListSinkOperator.processOp(ListSinkOperator.java:87)

有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您正在尝试处理Array,但您将获得Object。

在Json:
对象是:{...}
数组是:[...]

示例:
访问数组: myArray[0]
访问对象:myObject.myField