Pig 的 COGROUP 运算符如何工作?
How Pig's COGROUP operator works?
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)})
权威指南中有一个非常清楚的例子。我希望下面的片段能帮助你理解 cogroup 的概念。
grunt> DUMP A;
(2,并列)
(4,外套)
(3,帽子)
(1,围巾)
grunt> DUMP B;
(乔,2)
(汉克,4)
(阿里,0)
(夏娃,3)
(汉克,2)
grunt> D = COGROUP A BY $0, B BY $1;
grunt> DUMP D;
(0,{},{(Ali,0)})
(1,{(1,围巾)},{})
(2,{(2,Tie)},{(Joe,2),(Hank,2)})
(3,{(3,Hat)},{(Eve,3)})
(4,{(4,Coat)},{(Hank,4)})
COGROUP 为每个唯一的分组键生成一个元组。每个元组的第一个字段
是关键,其余字段是来自具有匹配关系的元组包
钥匙。第一个包包含来自关系 A 的具有相同键的匹配元组。
类似地,第二个包包含来自关系 B 的匹配元组
关键。
如果对于特定键,关系没有匹配键,则该关系的包是
empty. 例如,由于没有人买过一条围巾(ID为1),所以第二个包
该行的元组为空。这是一个外连接的例子,这是默认的
键入 COGROUP。
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)})
权威指南中有一个非常清楚的例子。我希望下面的片段能帮助你理解 cogroup 的概念。
grunt> DUMP A;
(2,并列) (4,外套) (3,帽子) (1,围巾)
grunt> DUMP B;
(乔,2) (汉克,4) (阿里,0) (夏娃,3) (汉克,2)
grunt> D = COGROUP A BY $0, B BY $1;
grunt> DUMP D;
(0,{},{(Ali,0)})
(1,{(1,围巾)},{})
(2,{(2,Tie)},{(Joe,2),(Hank,2)})
(3,{(3,Hat)},{(Eve,3)})
(4,{(4,Coat)},{(Hank,4)})
COGROUP 为每个唯一的分组键生成一个元组。每个元组的第一个字段 是关键,其余字段是来自具有匹配关系的元组包 钥匙。第一个包包含来自关系 A 的具有相同键的匹配元组。 类似地,第二个包包含来自关系 B 的匹配元组 关键。
如果对于特定键,关系没有匹配键,则该关系的包是 empty. 例如,由于没有人买过一条围巾(ID为1),所以第二个包 该行的元组为空。这是一个外连接的例子,这是默认的 键入 COGROUP。