【发布时间】:2020-01-18 03:58:40
【问题描述】:
伙计们,我正在尝试从配置单元中的字符串(列名:人)下方提取“状态”的值。问题是,该列既不是完整的 JSON,也不是存储为数组。
我试图通过将 '=' 替换为 ':' 来使其看起来像 JSON,但没有帮助。
[{name=abc, org=true, self=true, status=accepted, email=abc@gmail.com}, {name=cab abc, org=false, self=false, status=needsAction, email=cab@google.com}]
以下是我使用的查询:
SELECT
str.name,
str.org,
str.status
FROM table
LATERAL VIEW EXPLODE (TRANSLATE(people,'=',':')) exploded as str;
但我遇到以下错误:
FAILED: UDFArgumentException explode() takes an array or a map as a parameter
需要这样的输出:
name | org | status
-------- ------- ------------
abc | true | accepted
cab abc | false | needsAction
注意:已经有一个表,数据类型是字符串,我 无法更改表架构。
【问题讨论】:
标签: sql hadoop hive apache-spark-sql hiveql