按 1+ 个公共元素合并记录

Merging records by 1+ common elements

我有一个具有以下架构的配置单元 table:

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]).

如果更简单,输入 table 可以使用以下架构:

int key1
int key2

如果这可以通过 Hive 或 SparkSQL 完成,那将是我的首选。

谢谢!

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

select collect_list(key1) from yourtable group by key2

或者你的第一个table定义

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

希望对您有所帮助。