如何根据 JSON 中的字段对两个表进行 Hive JOIN?
Posted
技术标签:
【中文标题】如何根据 JSON 中的字段对两个表进行 Hive JOIN?【英文标题】:How to do a Hive JOIN on two tables based on a field inside a JSON? 【发布时间】:2019-09-20 08:05:13 【问题描述】:所以我有两个这样创建的表:
create external table test1 (json string) stored as textfile location '/user/data/test1';
create external table test2 (json string) stored as textfile location '/user/data/test2';
两个表都有一个字符串作为内部包含 JSON 对象的列。
以下是我如何从表中典型地选择名为 name
的字段:
select get_json_object(json, '$.name') from test1 limit 1;
...使用hive的get_json_object
UDF解析JSON字符串。
现在,我需要根据 JSON 对象中的 name
字段执行 test1 LEFT OUTER JOIN test2。我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:select t1.*, t2.* --select columns needed
from
(select t1.*, get_json_object(json, '$.name') as name from test1 t1) t1 --add more filters
left join
(select t2.*, get_json_object(json, '$.name') as name from test2 t2) t2 --add more filters
on t1.name=t2.name
【讨论】:
以上是关于如何根据 JSON 中的字段对两个表进行 Hive JOIN?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据 apache hive 中的键从 json 列表中提取 json 对象