Cross运算符
CROSS 运算符计算两个或多个关系的向量积。本章将以示例说明如何在Pig Latin中使用cross运算符。
语法
下面给出了 CROSS 运算符的语法。
- grunt> Relation3_name = CROSS Relation1_name, Relation2_name;
例
假设在HDFS的 /pig_data/ 目录中有两个文件,即 customers.txt 和 orders.txt ,如下所示。
customers.txt
- 1,Ramesh,32,Ahmedabad,2000.00
- 2,Khilan,25,Delhi,1500.00
- 3,kaushik,23,Kota,2000.00
- 4,Chaitali,25,Mumbai,6500.00
- 5,Hardik,27,Bhopal,8500.00
- 6,Komal,22,MP,4500.00
- 7,Muffy,24,Indore,10000.00
orders.txt
- 102,2009-10-08 00:00:00,3,3000
- 100,2009-10-08 00:00:00,3,1500
- 101,2009-11-20 00:00:00,2,1560
- 103,2008-05-20 00:00:00,4,2060
将这两个文件加载到Pig中,通过关系 customers 和 orders,如下所示。
- grunt> customers = LOAD 'hdfs://localhost:9000/pig_data/customers.txt' USING PigStorage(',')
- as (id:int, name:chararray, age:int, address:chararray, salary:int);
- grunt> orders = LOAD 'hdfs://localhost:9000/pig_data/orders.txt' USING PigStorage(',')
- as (oid:int, date:chararray, customer_id:int, amount:int);
现在让我们使用 cross 运算符获得这两个关系的向量积,如下所示。
- grunt> cross_data = CROSS customers, orders;
验证
使用 DUMP 运算符验证关系 cross_data ,如下所示。
- grunt> Dump cross_data;
输出
它将产生以下输出,显示关系 cross_data 的内容。
- (7,Muffy,24,Indore,10000,103,2008-05-20 00:00:00,4,2060)
- (7,Muffy,24,Indore,10000,101,2009-11-20 00:00:00,2,1560)
- (7,Muffy,24,Indore,10000,100,2009-10-08 00:00:00,3,1500)
- (7,Muffy,24,Indore,10000,102,2009-10-08 00:00:00,3,3000)
- (6,Komal,22,MP,4500,103,2008-05-20 00:00:00,4,2060)
- (6,Komal,22,MP,4500,101,2009-11-20 00:00:00,2,1560)
- (6,Komal,22,MP,4500,100,2009-10-08 00:00:00,3,1500)
- (6,Komal,22,MP,4500,102,2009-10-08 00:00:00,3,3000)
- (5,Hardik,27,Bhopal,8500,103,2008-05-20 00:00:00,4,2060)
- (5,Hardik,27,Bhopal,8500,101,2009-11-20 00:00:00,2,1560)
- (5,Hardik,27,Bhopal,8500,100,2009-10-08 00:00:00,3,1500)
- (5,Hardik,27,Bhopal,8500,102,2009-10-08 00:00:00,3,3000)
- (4,Chaitali,25,Mumbai,6500,103,2008-05-20 00:00:00,4,2060)
- (4,Chaitali,25,Mumbai,6500,101,2009-20 00:00:00,4,2060)
- (2,Khilan,25,Delhi,1500,101,2009-11-20 00:00:00,2,1560)
- (2,Khilan,25,Delhi,1500,100,2009-10-08 00:00:00,3,1500)
- (2,Khilan,25,Delhi,1500,102,2009-10-08 00:00:00,3,3000)
- (1,Ramesh,32,Ahmedabad,2000,103,2008-05-20 00:00:00,4,2060)
- (1,Ramesh,32,Ahmedabad,2000,101,2009-11-20 00:00:00,2,1560)
- (1,Ramesh,32,Ahmedabad,2000,100,2009-10-08 00:00:00,3,1500)
- (1,Ramesh,32,Ahmedabad,2000,102,2009-10-08 00:00:00,3,3000)-11-20 00:00:00,2,1560)
- (4,Chaitali,25,Mumbai,6500,100,2009-10-08 00:00:00,3,1500)
- (4,Chaitali,25,Mumbai,6500,102,2009-10-08 00:00:00,3,3000)
- (3,kaushik,23,Kota,2000,103,2008-05-20 00:00:00,4,2060)
- (3,kaushik,23,Kota,2000,101,2009-11-20 00:00:00,2,1560)
- (3,kaushik,23,Kota,2000,100,2009-10-08 00:00:00,3,1500)
- (3,kaushik,23,Kota,2000,102,2009-10-08 00:00:00,3,3000)
- (2,Khilan,25,Delhi,1500,103,2008-05-20 00:00:00,4,2060)
- (2,Khilan,25,Delhi,1500,101,2009-11-20 00:00:00,2,1560)
- (2,Khilan,25,Delhi,1500,100,2009-10-08 00:00:00,3,1500)
- (2,Khilan,25,Delhi,1500,102,2009-10-08 00:00:00,3,3000)
- (1,Ramesh,32,Ahmedabad,2000,103,2008-05-20 00:00:00,4,2060)
- (1,Ramesh,32,Ahmedabad,2000,101,2009-11-20 00:00:00,2,1560)
- (1,Ramesh,32,Ahmedabad,2000,100,2009-10-08 00:00:00,3,1500)
- (1,Ramesh,32,Ahmedabad,2000,102,2009-10-08 00:00:00,3,3000)
转载本站内容时,请务必注明来自W3xue,违者必究。