【发布时间】:2016-08-13 22:36:11
【问题描述】:
我有一列包含一个大型 JSON 对象。例如,我们称列 Column1,这是一个典型的元素:
{"key1":value,"key2":[{"subK11":val,"subK12":val},{"subK21":val,"subK22":val}]}
所以,我可以使用以下方法提取普通元素:
select get_json_object(Column1,'$.key1') as key1
但我一直无法弄清楚如何以可用的形式提取 ARRAY,因为:
select get_json_object(Column1,'$.key2') as key2
返回 STRING 类型。所以我不能像往常一样从数组中选择元素。也就是说,这个查询会失败:
select key2[1] as first_element
from
(select get_json_object(Column1,'$.key2') as key2)
或
select explode(key2)
from
(select get_json_object(Column1,'$.key2') as key2 )
两者都给出错误,后者说“explode() 需要数组类型”。所以我认为问题在于 get_json_object 返回一个字符串。我需要它来识别 key2 包含一个 ARRAY,但我不知道该怎么做。
我是 Hive SQL 的新手,主要是 SQL 用户,所以请告诉我是否有任何明显我遗漏的疯狂内容。对于其他任何问题,我都没有找到此类问题的解决方案。
【问题讨论】: