如何根据 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