我有一个包含以下架构的配置单元表:
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完成,那将是我的偏好。
谢谢!
答案 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
我希望它有所帮助。