我正在尝试从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)
有没有人知道如何解决这个问题?
答案 0 :(得分:2)
您正在尝试处理Array,但您将获得Object。
在Json:
对象是:{...}
数组是:[...]
示例:
访问数组:
myArray[0]
访问对象:myObject.myField