如何自行加入两个包?

时间:2015-07-16 19:49:47

标签: mapreduce apache-pig

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

nav ul li:hover ul {
    display: block;
}

然后按如下方式加载我的数据,并将其分组:

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;

然后,我想对groups_numbers包进行自联接,以便为每个第一级和第二级连接提供结果的第一个整数。在这种情况下,那将是:

(1,{(2)})
(3,{(4)})
(5,{(6),(7)})
(6,{(8)})

因为5连接到6,连接到8,所以8是6的二级连接。如何在Pig中实现它?

1 个答案:

答案 0 :(得分:0)

首先加入:

    joined = join data1 by int_2, data2 by int_1

其中data1和data2是相同的集合(在此示例中为data的副本)。

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

(通过Pig邮件列表回答)

相关问题