hadoop pig连接任何匹配的元组值

rdlzhqv9  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(335)

我对pig还不熟悉,正试图用它来处理数据集。我有一组记录

id    elements
--------------
1     ["a","b","c"]
2     ["a","f","g"]
3     ["f","g","h"]

我的想法是要创建元素的元组,这些元组中有任何重叠的元素。如果元素只是一个项目而不是数组,我可以做一个简单的连接,如:

A = LOAD 'mydata' ...
B = FOREACH A GENERATE id as id_2, elements as elements_2;
C = JOIN A BY elements, B BY elements_2;

但是自从 elements 是一个数组,如果只有部分重叠,这将不起作用。你对如何在Pig身上做这个有什么想法吗?
预期的输出将给出具有重叠的元组:

(1,2)
(2,3)
bxjv4tth

bxjv4tth1#

我认为不可能使用 JOIN 为了这个。一个(不那么优雅的)解决办法是 CROSS 两个关系,然后做一个 FILTER 操作。这个 FILTER 条件可以是一个udf,也可以是某种regex\u extract\u all和生成字段的匹配。如果数组的大小总是3,我可能会选择regex\u extract\u all解决方案。

相关问题