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

wbgh16ku  于 2023-01-20  发布在  Hive
关注(0)|答案(1)|浏览(145)

我有一个具有以下模式的配置单元表:

int key1 # this is unique
array<int> key2_list

现在,如果记录的key2_list有任何公共元素,我想在这里合并记录,例如,如果记录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完成此操作。

6rqinv9w

6rqinv9w1#

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

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

相关问题