按 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
希望对您有所帮助。
我有一个具有以下架构的配置单元 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
希望对您有所帮助。