我有一组数字,它们描述了第一组整数和第二组整数之间的联系。例如:
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)})
然后,我想对grouped_numbers包进行自连接,以便给出结果的第一个整数及其每个一度和二度连接。在本例中,它将是:
(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
,其中data1和data2是相同的集合(本例中是data
的副本)。
然后按第一个字段分组。内包将拥有与"组"的所有连接,可能不止一次。所以你可能需要一个独特的内袋,如果你只是一个独特的元素。
(通过Pig邮件列表回答)