pig在MapReduce下的实例

前提:安装的是完全分布式的Hadoop,启动hadoop,然后启动Pig

根据Hadoop权威指南实例实现计算每年的最高温度。

1、第一步,创建temperature.txt的文档记录每年的温度


2、将temperature.txt文件放到HDFS 文件上去,具体操作如下:


3、输入pig,进入shell编辑模式下。


4、查看temperature是否在in的目录下,ls in查看temperature.txt文件是否传入。

grunt有默认路径,通过ls就可以查看。


5、输入pig脚本语句,开始计算

records = load  'in/temperature.txt'  using  PigStorage('  ') as (year:chararray,temperature:int);

注意事项:因为temperature.txt中我使用的是空格进行分割的。所以在这里使用PigStorage('  ')的方式,如果你的分隔符是Tab,就可以按照权威指南里的步骤进行(不加 using  PigStorage('  ')即可),PigStorage的默认分割方式是Tab。我第一次就是没有加PigStorage导致实验失败的。

注意:pig并没有运行该命令,仅仅是解析了该命令,只有到使用dump命令或者是store命令时pig才会真正执行该命令。dump命令将打印出这个变量的内容,store命令将变量所代表的内容保存到一个文件中。

6、查看records的内容。

dump records;


7、对records的内容进行过滤,去掉温度等于56的一栏

filtered_records = filter records by temperature !=56;


8、查看filtered_records的内容

dump filtered_records;


9、使用group将filtered_records字段按照year分组

grouped_records = group filtered_records by year;


10、查看grouped_records的结果

dump grouped_records;


11、对grouped_records的每行数据进行处理,计算出每年最高气温

max_temp = foreach grouped_records generate group ,MAX(filtered_records.temperature);


12、查看max_temp的结果。

dump max_temp;

13、使用illustrate查看结果

通过本次实验,我们来分析pig的数据模型

filtered_records:bag{:tuple(year:chararray,temperature:int)}对应给出的结果{(1992,18),(1992,35)}

bag是一个元组,元组中有子元组(tuple),子元组的个数不限,相当于关系数据库中的表,每个表中有很多行

tuple就对应关系数据库中的行,只是它的个数和属性不要求与其他的tuple一致。

field 对应于关系数据库的属性,year:chararray给出的就是属性名year,类型是chararray

参考资料:Hadoop权威指南

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值