pig实战演练:手机流量统计

•pig是一种操作hadoop的轻量级脚本语言,是基于hadoop的数据处理框架

•Pig包括两部分:

 用于描述数据流的语言,称为PigLatin。

  用于执行PigLatin程序的执行环境,当前有两个环境:单JVM中的本地执行环境和 Hadoop集群上  的分布式执行环境。

• Pig和mapReduce的区别:  mr是基于java的,代码冗长复杂

       Pig自身有新的一套语言,数据处理的过程会自动转换成map-reduce


pig的数据类型:

基本数据类型:  int , long , float , double , chararray , bytearray

复合数据类型: map , tuple , bag 

注意: pig 的所有关键词和命令都要大写,结束 要加 分号 ,等于号两边要加空格

需求 : 统计如下文件中 每个手机号使用流量的情况 

待处理文件:http.dat

下载地址:http://download.youkuaiyun.com/detail/xq_iris/9428040


文件格式:



文件截图:




需要保留的字段有 : 1(手机号)6(上行数据包数)7(下行数据包数)8(上行流量)9(下行流量)


使用 pig 对之进行处理 :  命令pig 进入pig运行模式

step1:将文件传至hdfs

step2:将文件数据类型转化   

grunt>/*(重命名,设置别名)*/     A = LOAD '/http' AS (t0:long,t1:chararray,t2:chararray,t3:chararray,t4:chararray,t5:chararray,t6:long,t7:long,t8:long,t9:long,t10:chararray );


step3: 查看A是否正确,命令:DUMP A ;



发现开始了一个 map-reduce 进程 ,耐心等待,出现结果



 

map-reduce进程完成 ,出现了我们想要的结果

step4:   使用迭代命令 foreach 抽取出要保留的字段

grunt>  B=FOREACH A GENERATE t1,t6,t7,t8,t9;

grunt> DUMP B;     //查看B 的结果是否和预期一样




结果正确,进行下一步;

step5: 使用 group by 命令 将B 中的结果 按手机号(t1)进行分组

grunt> C = group B by t1 ;

grunt>   DUMP C ;   //查看C 的结果是否正确



发现 同手机号的被合并成一个数组,符合预期,进行下一步

step6:对各流量(t6,t7,t8,t9)参数 进行求和

grunt> D = FOREACH C GENERATE group, SUM(B.t6), SUM( B.t7), SUM(B.t8), SUM(B.t9) ;

grunt> DUMP D;

//其中 变量 group 是指分组后的组名,即分组后手机号



结果正确 

step 7: 将结果保存到hdfs中:

grunt> STORE D INTO '/PIG_RESULT';

可在hdfs 中查看:






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值