hadoop pig加入任何匹配的元组值

时间:2014-03-19 06:43:18

标签: arrays join hadoop apache-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是一个数组,如果只有部分重叠,这将不起作用。关于如何在猪身上做这个的任何想法?

预期的输出会给出重叠的元组:

(1,2)
(2,3)

1 个答案:

答案 0 :(得分:0)

我不认为可以使用JOIN来实现此目的。 一个(不那么优雅)解决方案是CROSS两个关系,然后进行FILTER操作。 FILTER条件可以是UDF或某种regex_extract_all以及生成字段的匹配。如果数组的大小总是3,我可能会选择regex_extract_all解决方案。