您的位置:首页 > 其它

使用 Pig 进行数据分析

2016-03-10 11:43 211 查看
本文,我们将以一个具体案例说明,如何通过Pig——这一便捷的框架,进行数据的处理与分析工作。

(1) 上传待分析文件到 hdfs:

比如我们要处理的用户上网日志信息,下载地址,上网日志数据(hadoop用)

[root@hadoop0 ~]# hadoop fs -put /HTTP_20130313143750.dat /wlan


该上网日志信息的字段,类型及含义如下:

0、reportTime、long、记录报告时间戳

1、msisdn、String、手机号码

2、apmac、String、AP mac

3、acmac、String、AC mac

4、host、String、访问的网址

5、siteType、String、网址种类

6、upPackNum、long、上行数据包数、单位:个

7、downPackNum、long、下行数据包数、单位:个

8、upPayLoad、long、上行总流量,单位:byte

9、downPayLoad、long、下行总流量、单位:byte

10、httpStatus、String、http response 的状态

(2)进入Pig 命令行环境(grunt)

[root@hadoop0 ~]# pig


(3)将hdfs 中待处理的数据转换为pig可以处理的模式

A = load '/wlan' as (t0:long, msisdn:chararray, t2:chararray, t3:chararray, t4:chararray, t5:chararray, t6:long, t7:long, t8:long, t9:long, t10:chararray);
# A 为别名,便于引用


查看变量内容拼,使用
dump A;


查看输出日志信息,我们可见其处理依赖的仍然是MapReducer.

(4)提取待分析的有用字段信息;

B = foreach A generate msisdn, t6, t7, t8, t9;


(这样的按步执行,类似中学数学题形式的按步执行,我们就会发现其中的优越之处了,解决一些复杂的业务时,按照SQL的方式无法一步给出结果)

(5)指定关键字分组

C = group B by msisdn;


(6)流量汇总

D = foreach C generate group, SUM(B.t6), SUM(B.t7), SUM(B.t8), SUM(B.t9);


(7)将结果存储到hdfs中:

store D into '/wlan_res'


注:

(1)无论是
load
(从hdfs中加载数据)还是
store
(存储数据到hdfs),Pig 对 hdfs 有十分方便的交互;

(2)Pig 的数据处理操作远不止于这些,比如排序:

E = order D by group;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: