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)})
答案 0 :(得分:2)
权威指南中有一个非常明确的例子。我希望下面的代码片段可以帮助您理解组合概念。
<强>咕噜&GT; DUMP A;
(2,领带) (4,涂层) (3,帽) (1,围巾)
<强>咕噜&GT; DUMP B;
(乔,2) (汉克,4) (阿里,0) (前夕,3) (汉克,2)
<强>咕噜&GT; D = COGROUP A $ 0,B BY $ 1;
<强>咕噜&GT; DUMP D;
<强>(0,{},{(阿里,0)})强>
<强>(1,{(1,围巾)},{})强>
<强>(2,{(2,领带)},{(乔,2),(汉克,2)})强>
<强>(3,{(3,帽)},{(前夕,3)})强>
<强>(4, - {(4,涂层)},{(汉克,4)})强>
COGROUP为每个唯一的分组键生成一个元组。每个元组的第一个字段 是关键,剩下的字段是来自匹配关系的元组包 键。第一个包包含来自关系A的匹配元组和相同的密钥。 类似地,第二个包包含来自关系B的匹配元组 键。
如果对于特定键,关系没有匹配键,那么该关系的包就是 空的。例如,因为没有人买过围巾(ID为1),所以第二个包里面 该行的元组为空。这是外部联接的示例,这是默认值 输入COGROUP。