COGROUP运算符在这里如何工作?
在最后两行输出中,我们如何以及为什么会得到空袋(没有网站详细解释COGROUP中的数据排列)?

A = load 'student' as (name:chararray, age:int, gpa:float);
B = load 'student' as (name:chararray, age:int, gpa:float);
dump B;
(joe,18,2.5)
(sam,,3.0)
(bob,,3.5)

X = cogroup A by age, B by age;
dump X;
(18,{(joe,18,2.5)},{(joe,18,2.5)})
(,{(sam,,3.0),(bob,,3.5)},{})
(,{},{(sam,,3.0),(bob,,3.5)})

最佳答案

权威指南中有一个非常清晰的示例。我希望下面的代码片段可以帮助您了解共同小组的概念。

grunt> DUMP A;

(2,领带)
(4,外套)
(3,帽子)
(1,围巾)

咕>声> DUMP B;

(乔,2)
(汉克,4)
(阿里,0)
(前夕3)
(汉克2)

grunt> D =组团A $ 0,B BY $ 1;

咕>声> DUMP D;

(0,{},{(Ali,0)})

(1,{(1,Scarf)},{})

(2,{(2,Tie)},{(Joe,2),(Hank,2)})

(3,{(3,Hat)},{(Eve,3)})

(4,{(4,Coat)},{(Hank,4)})

COGROUP为每个唯一的分组键生成一个元组。每个元组的第一个字段
是关键,剩下的字段是与关系匹配的元组袋
键。第一个包包含关系A中具有相同键的匹配元组。
同样,第二个袋子包含关系B中具有相同关系的匹配元组
键。

如果某个特定键的关系没有匹配的键,则该关系的包为
空的。
例如,由于没有人购买围巾(ID为1),因此
该行的元组为空。这是外部联接的示例,这是默认设置
COGROUP的类型。

关于hadoop - Pig的COGROUP运算符如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27769357/

10-12 23:46