json - HIVE中将JSON格式String转成数组

标签 json oracle hadoop hive

我有一个存储 JSON 格式字符串的数据库列。字符串本身包含多个元素,如数组。每个元素包含多个键值对。一些值也可能包含多个键值对,例如下面的“地址”属性。

[{"name":"abc", 
  "address":{"street":"str1", "city":"c1"},
  "phone":"1234567"
 },
 {"name":"def", 
  "address":{"street":"str2", "city":"c1"},
  "phone":"7145895"
 }
]

我的最终目标是获取 JSON 字符串中每个字段的单个值。我可能会使用 explode() 来做到这一点,但 explode() 需要将数组传递给它,而不是字符串。所以我的第一个目标是将 JSON 字符串转换为数组。有人可以让我知道该怎么做吗?非常感谢。

最佳答案

你可以从这个开始:

select concat(‘{“name”’,data_json) from your_table q1 --re-construct your json
lateral view explode(split(json_data,’{“name”’)) json_splits as data_json --split json at each {"name" tag into array and then explode

注意:我的代码未经过测试,因为我目前无权访问配置单元。这绝对应该给你一个好的开始,或者你总是可以使用 Hive SerDe for JSON com.cloudera.hive.serde.JSONSerDe

关于json - HIVE中将JSON格式String转成数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39732987/

相关文章:

C#反序列化动态JSON

oracle - Localhost 不将请求转发到 Oracle Docker 容器

hadoop - 用于 Teradata 的 HDFS

使用 zip 输入文件的 Hadoop 流式处理

java - Json文件无法读取

javascript - 在 HTML 中显示我的 JSON

JAVA从数据库获取数据不循环

file - Hadoop 重命名文件

java - 如何从嵌套数组中提取 JSON 数据?使用安卓

oracle - 显示 Oracle 中锁定的行