Mapreduce 如何自接两个包?

Mapreduce 如何自接两个包?,mapreduce,apache-pig,Mapreduce,Apache Pig,我有一组数字描述了第一组整数和第二组整数之间的连接。例如: 1,2 3,4 5,6 5,7 6,8 然后按如下方式加载数据,并将其分组: data = load 'data.csv' as integer_1, integer_2; grouped = group data by integer_1; grouped_numbers = foreach grouped generate group as node, data.integer_2 as connection; 然后生成一个包

我有一组数字描述了第一组整数和第二组整数之间的连接。例如:

1,2
3,4
5,6
5,7
6,8
然后按如下方式加载数据,并将其分组:

data = load 'data.csv' as integer_1, integer_2;
grouped = group data by integer_1;

grouped_numbers = foreach grouped generate group as node, data.integer_2 as connection;
然后生成一个包,其中包含每个第一个整数及其一阶连接:

(1,{(2)})
(3,{(4)})
(5,{(6),(7)})
(6,{(8)})
然后,我想对分组的_数字包进行一次自连接,以便给出结果的第一个整数及其每个一次和二次连接。在这种情况下,这将是:

(1,{(2)})
(3,{(4)})
(5,{(6),(7),(8)})
(6,{(8)})
因为5连接到6,6连接到8,所以8是6的二次连接。如何在Pig中实现此功能?

第一次加入:

    joined = join data1 by int_2, data2 by int_1
其中,数据1和数据2是相同的集合(本例中为
数据的副本)

然后按第一个字段分组。内袋将具有与“组”的所有连接,可能不止一次。因此,如果你只需要一个独特的元素,那么你可能也需要一个独特的内袋

(通过Pig邮件列表回答)

第一次加入:

    joined = join data1 by int_2, data2 by int_1
其中,数据1和数据2是相同的集合(本例中为
数据的副本)

然后按第一个字段分组。内袋将具有与“组”的所有连接,可能不止一次。因此,如果你只需要一个独特的元素,那么你可能也需要一个独特的内袋

(通过猪邮件列表回答)