如何根据 JSON 中的字段对两个表进行 Hive JOIN?
How to do a Hive JOIN on two tables based on a field inside a JSON?
所以我创建了两个表:
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 的方法:
select get_json_object(json, '$.name') from test1 limit 1;
...它使用配置单元的 get_json_object
UDF 来解析 JSON 字符串。
现在,我需要根据 JSON 对象中的 name
字段执行 test1 LEFT OUTER JOIN test2。我怎样才能做到这一点?
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
所以我创建了两个表:
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 的方法:
select get_json_object(json, '$.name') from test1 limit 1;
...它使用配置单元的 get_json_object
UDF 来解析 JSON 字符串。
现在,我需要根据 JSON 对象中的 name
字段执行 test1 LEFT OUTER JOIN test2。我怎样才能做到这一点?
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