hive,按数组中的项连接2个表

qoefvg9y  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(285)

我需要在一个数组中按列左键联接两个表。
表一型号:
结构id-字符串
ips-字符串数组
表2型号:
ip-字符串
主机名-字符串
我想要的结果是:
id、ip、主机名(如果存在)
需要匹配第一个表中的数组中与第二个表中的ip对应的所有ip。
我不知道如何开始,任何想法或参考是欢迎的。

h7appiyu

h7appiyu1#

您可以在第二个表上使用explode选项,然后按如下所示执行连接。
假设您有一个带有字符串名称数组的表1,表2有一个字符串名称数组
创建表1(id字符串,ips数组);创建表2(ip字符串,主机名int);
然后可以使用分解自定义项在表1上创建侧视图。
从表1中选择id,ip侧视图分解(ips)ep作为ip;
这将为数组中的每个值将单行分解为多行。请阅读侧视图文档以获取更多帮助。
最后的连接查询是这样的。

SELECT t1.id,t1.ip, t2.hostname
FROM 
(select id,ip  from table_1 LATERAL VIEW explode(ips) ep AS ip) AS t1 
LEFT JOIN table_2 AS t2 
ON (t2.ip=t1.ip);

相关问题