Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop How Pig';s COGROUP运算符有效吗?_Hadoop_Hive_Apache Pig_Bigdata - Fatal编程技术网

Hadoop How Pig';s COGROUP运算符有效吗?

Hadoop How Pig';s COGROUP运算符有效吗?,hadoop,hive,apache-pig,bigdata,Hadoop,Hive,Apache Pig,Bigdata,COGROUP操作符在这里是如何工作的? 我们如何以及为什么在最后两行输出中得到空包(没有网站详细解释COGROUP中的数据安排) 《权威指南》中有一个非常明确的例子。我希望下面的代码片段能帮助您理解cogroup的概念 grunt>DUMP A (2、平局) (4、外套) (3、帽子) (1、围巾) grunt>DUMP B (乔,2岁) (汉克,4岁) (阿里,0) (夏娃,3岁) (汉克,2) grunt>D=A组乘以$0,B组乘以$1 grunt>DUMP D (0,{},{(阿里,0)

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


《权威指南》中有一个非常明确的例子。我希望下面的代码片段能帮助您理解cogroup的概念

grunt>DUMP A

(2、平局) (4、外套) (3、帽子) (1、围巾)

grunt>DUMP B

(乔,2岁) (汉克,4岁) (阿里,0) (夏娃,3岁) (汉克,2)

grunt>D=A组乘以$0,B组乘以$1

grunt>DUMP D

(0,{},{(阿里,0)})

(1,{(1,围巾)},{})

(2,{(2,Tie)},{(乔,2),(汉克,2)})

(3,{(3,帽子)},{(夏娃,3)})

(4,{(4,外套)},{(汉克,4)})

COGROUP为每个唯一的分组键生成一个元组。每个元组的第一个字段 是键,其余字段是匹配关系中的元组包 钥匙第一个包包含关系A中具有相同键的匹配元组。 类似地,第二个包包含关系B中具有相同属性的匹配元组 钥匙

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

这是您正在使用的实际数据集和代码吗?如果没有,请给出示例这是从[为什么它有一个
Hive
标记]中获取的实际示例?根据规则,如果某个特定键的关系没有匹配的键,那么该关系的包是空的,在我的例子中,关系a,(sam,,3.0)第二个字段有一个空字段,它在关系B中具有等效的空字段。因此,输出应该是(,{(sam,,3.0),(bob,,3.5)},{(sam,,3.0),(bob,,3.5)},但为什么我们得到(,{(sam,,3.0),(bob,,3.5)},{}。
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)})