0

我正在用Pig处理大量数据,我需要按一个字段或另一个字段对记录进行分组。请注意它不是经典GROUP BY X AND Y的,我的意思是,如果两条记录的属性 X OR Y 具有相同的值,则必须将它们分组。

例如,给定这个数据集:

1, a, 'r1'
2, b, 'r2'
3, c, 'r3'
4, a, 'r4'
3, d, 'r5'
5, c, 'r6'
5, e, 'r7'

按第一个或第二个字段分组的结果应该是:

{(1, a, 'r1'), (4, a, 'r4')}
{(2, b, 'r2')}
{(3, c, 'r3'), (3, d, 'r5'), (5, c, 'r6'), (5, e, 'r7')}

(1) 因为 'r1' 和 'r4' 对于第二个属性具有相同的值。

(2) 记录“r2”对于第一个或第二个字段没有任何重合。

(3) 最后,“r3”与“r5”共享第一个属性的值,与“r6”共享其第二个字段的值。并且 'r6' 与 'r7' 共享第一个属性的相同值。请注意,“r3”和“r7”没有任何共同的字段,但链接它们在同一组中结束的记录。

我已经使用 Java(来自 Pig)解决了这个问题,并且我知道如何使用 Map-Reduce 来解决这个问题。但是(为了学习)我想知道如何使用Pig-latin或任何可以帮助我解决这些问题的库。

4

0 回答 0