如何自连接两个包



我有一组数字,它们描述了第一组整数和第二组整数之间的联系。例如:

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邮件列表回答)

相关内容

  • 没有找到相关文章

最新更新