Pig

Pig简介

本文以分析Web日志统计每天的PV和UV为例,介绍如何在百度智能云平台使用Pig。

Pig是基于Hadoop的大规模数据分析平台,把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig适用于大量的并行进程,因此可处理大规模数据集,而且Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口,便于写入和维护,可为实现不同的目的创建自己的进程。

Pig的数据类型,不仅支持包、元组和映射等高级概念,还支持简单的数据类型,如int、long、float、double、chararray和bytearray。

程序准备

您可以直接使用样例程序

lines = LOAD '${INPUT}';  
fields = FOREACH lines GENERATE FLATTEN(REGEX_EXTRACT_ALL($0, '(\\S+)\\s+-\\s+\\[(.*?)\\]\\s+\\"(.*)\\"\\s+(\\d{3})\\s+(.*)\\s+\\"(.*)\\"\\s+\\"(.*)\\"\\s+(.*)\\s+\\"(.*)\\"\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)'));
access_logs = FOREACH fields GENERATE $0 AS remote_ip, ToString(ToDate($1, 'dd/MMM/yyyy:HH:mm:ss Z'), 'dd/MMM/yyyy') AS date;
groups = GROUP access_logs BY date;
pv = FOREACH groups GENERATE group, COUNT(access_logs);
STORE pv INTO '${OUTPUT}';

创建集群

  1. 准备数据,请参考数据准备
  2. 准备百度智能云环境
  3. 登录控制台,选择“产品服务->百度MapReduce BMR”,点击“创建集群”,进入集群创建页,并做如下配置:
    • 设置集群名称
    • 设置管理员密码
    • 关闭日志开关
    • 选择镜像版本“BMR 1.0.0(hadoop 2.7)”
    • 选择内置模板“hadoop”。
  4. 请保持集群的其他默认配置不变,点击“完成”可在集群列表页可查看已创建的集群,当集群状态由“初始化中”变为“空闲中”时,集群创建成功。

运行Pig作业

  1. 在“产品服务>MapReduce>百度MapReduce-作业列表”页中,点击“创建作业”,进入创建作业页。
  2. 配置Pig作业参数,具体如下:
    • 作业类型:选择“Pig作业”。
    • 作业名称:输入作业名称,长度不可超过255个字符。
    • bos脚本地址:可输入样例程序路径bos://bmr-public-data/apps/pig/AccessLogAnalyzer.pig
    • bos输入地址:可输入样例数据路径bos://bmr-public-data/logs/accesslog-1k.log
    • bos输出地址:输入bos://{yourbucket}/output,该路径必须具有写权限且路径中所指定的目录不能在bos上存在,例如,输出路径为bos://test/sqooptest,则sqooptest目录在bos上必须不存在。
    • 失败后操作:继续。
    • 应用程序参数:无。
  3. 在“集群适配”区,选择适配的集群。
  4. 点击“完成”,则作业创建完成。运行中的作业状态会由“等待中”更新为“运行中”,当作业运行完毕后状态会更新为“已完成”。

查看结果

可以去bos://{yourbukcet}/output路径下查看输出。如果使用系统提供的输入数据和程序,可以看到如下结果:

03/Oct/2015    139
04/Oct/2015    375
05/Oct/2015    372
06/Oct/2015    114