Hive,在数组

时间:2017-10-10 15:18:32

标签: hive apache-spark-sql hiveql

我需要在数组中按列离开外连接2表。

表一模型:

  • 结构ID - 字符串
  • ips - 一个字符串数组

表二模型:

  • ip - string
  • 主机名 - 字符串

我想要的结果是格式:

id,ip,hostname(如果存在)

需要匹配第一个表中具有第二个表中相应ip的数组中的所有IP。

我不确定如何开始,欢迎任何想法或参考。

1 个答案:

答案 0 :(得分:1)

您可以使用第二个表上的explode选项,然后执行如下的连接。

假设您有一个包含字符串名称数组的table_1,而表2具有名称

  

CREATE TABLE table_1(id string,ips array);   CREATE TABLE table_2(ip string,hostname int);

然后你可以使用explode udf在table_1上创建一个侧视图。

  

从table_1选择id,ip,LATERAL VIEW explode(ips)ep AS ip;

这将为数组中的每个值将单行分解为多行。请阅读Array#map以获取更多帮助。

最终的连接查询将是这样的。

<color name="ambar400">#FFCA28</color>