大象教程
首页
Spark
Hadoop
HDFS
MapReduce
Hive
Pig 教程
Pig 教程
Pig 体系结构
Pig 安装
Pig 执行
Pig Grunt Shell
Pig Latin 基础
Pig 读取数据
Pig 存储数据
Pig Dump 运算符
Pig Describe 运算符
Pig Explain 运算符
Pig illustrate 运算符
Pig GROUP 运算符
Pig Cogroup 运算符
Pig JOIN 运算符
Pig Cross 运算符
Pig Union 运算符
Pig SPLIT 运算符
Pig FILTER 运算符
Pig DISTINCT 运算符
Pig FOREACH 运算符
Pig ORDER BY 运算符
Pig LIMIT 运算符
Pig eval(求值) 函数
Pig Load & Store 函数
Pig Bag & Tuple 函数
Pig 字符串(String) 函数
Pig 日期时间函数
Pig 数学函数
#Pig Cogroup 运算符 Cogroup操作符或多或少以group同样的方式工作。这两个运算符之间的唯一区别是,group运算符通常与一个关系一起使用,而cogroup运算符用于涉及两个或多个关系的语句中。 ##使用Cogroup对两个关系进行分组 假设我们在HDFS目录/pig_data/中有两个文件,即student_details.txt和employee_details.txt,如下所示。 ``` 001,Rajiv,Reddy,21,9848022337,Hyderabad 002,siddarth,Battacharya,22,9848022338,Kolkata 003,Rajesh,Khanna,22,9848022339,Delhi 004,Preethi,Agarwal,21,9848022330,Pune 005,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar 006,Archana,Mishra,23,9848022335,Chennai 007,Komal,Nayak,24,9848022334,trivendram 008,Bharathi,Nambiayar,24,9848022333,Chennai ``` ``` 001,Robin,22,newyork 002,BOB,23,Kolkata 003,Maya,23,Tokyo 004,Sara,25,London 005,David,23,Bhuwaneshwar 006,Maggy,22,Chennai ``` 并且我们已将这些文件分别以关系名称student_details和employee_details加载到Pig中,如下所示。 ```bash grunt> student_details = LOAD 'hdfs://localhost:9000/pig_data/student_details.txt' USING PigStorage(',') as (id:int, firstname:chararray, lastname:chararray, age:int, phone:chararray, city:chararray); grunt> employee_details = LOAD 'hdfs://localhost:9000/pig_data/employee_details.txt' USING PigStorage(',') as (id:int, name:chararray, age:int, city:chararray); ``` 现在,让我们将student_details和employee_details关系的记录/元组与按age进行分组,如下所示。 ```bash grunt> cogroup_data = COGROUP student_details by age, employee_details by age; ``` **验证** 如下所示,使用DUMP运算符验证关系group_data。 ```bash grunt> Dump group_data; ``` 它将产生以下输出,显示名为cogroup_data的关系的内容,如下所示。 ``` (21,{(4,Preethi,Agarwal,21,9848022330,Pune), (1,Rajiv,Reddy,21,9848022337,Hyderabad)}, { }) (22,{ (3,Rajesh,Khanna,22,9848022339,Delhi), (2,siddarth,Battacharya,22,9848022338,Kolkata) }, { (6,Maggy,22,Chennai),(1,Robin,22,newyork) }) (23,{(6,Archana,Mishra,23,9848022335,Chennai),(5,Trupthi,Mohanthy,23,9848022336 ,Bhuwaneshwar)}, {(5,David,23,Bhuwaneshwar),(3,Maya,23,Tokyo),(2,BOB,23,Kolkata)}) (24,{(8,Bharathi,Nambiayar,24,9848022333,Chennai),(7,Komal,Nayak,24,9848022334, trivendram)}, { }) (25,{ }, {(4,Sara,25,London)}) ``` COGROUP 运算符根据年龄对每个关系中的元组进行分组,其中每个组都描述特定的age值。 例如,如果我们考虑结果的第一个元组,则将其按年龄21分组。它包含两个bag: - 第一个bag中有第一个关系中所有元组(在这种情况下,student_details)的年龄为21岁,并且 - 第二个bag包含第二个关系中所有年龄为21岁的元组(在本例中为employee_details)。 如果某个关系中没有age值为21的元组,它将返回一个空包。
加我微信交流吧