使用 Pig 进行数据分析

本文,我们将以一个具体案例说明,如何通过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;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值