通过1个以上的共同元素合并记录

时间:2017-12-31 22:09:59

标签: apache-spark-sql hiveql pyspark-sql

我有一个包含以下架构的配置单元表:

int key1 # this is unique
array<int> key2_list

现在我想在这里合并记录,如果他们的key2_lists有任何共同的元素。例如,如果记录A有(10,[1,3,5])而B有(12,[1,2,4]),我想把它合并为([10,12],[1,2] ,3,4,5])或([1,2,3,4,5])。

如果更容易,输入表可以改为使用以下模式:

int key1
int key2

如果可以通过Hive或SparkSQL完成,那将是我的偏好。

谢谢!

1 个答案:

答案 0 :(得分:0)

对于您的第二个表定义,您可以运行类似

的内容
select collect_list(key1) from yourtable group by key2

或者您的第一个表定义

select collect_list(key1) from 
(select key1,  mykey FROM yourtable LATERAL VIEW explode(key2_list) a AS mykey) t
group by mykey

我希望它有所帮助。

相关问题