Hadoop的脚本语言Pig应用

来源:互联网 发布:紫金红葫芦淘宝 编辑:程序博客网 时间:2024/06/05 00:21
 Apache Pig 是一个高级过程语言,适合于使用 Hadoop 和 MapReduce 平台来查询大型半结构化数据集。通过允许对分布式数据集进行类似 SQL 的查询,Pig 可以简化 Hadoop 的使用。从编写mapreduce程序到编译部署通常都很耗费时间,有可能运维人员都不懂mapreduce,在这种情况下可以用轻量级的脚本语言Pig来完成,通过Pig引擎生成分布式的mapreduce job最终完成计算。
      Pig 是一个强大的工具,可以在 Hadoop 集群中查询数据。它是如此强大,Yahoo! 估计,其 Hadoop 工作负载中有 40% 至 60% 由 Pig Latin 脚本产生。在 Yahoo! 的 100,000 个 CPU 中,大约有 50% 的 CPU 仍在运行 Hadoop。但 Yahoo! 并不是利用 Pig 的惟一组织。您在 Twitter 中也会发现 Pig(用于处理日志和挖掘微博数据);在 AOL 和 MapQuest 上也会发现它(用于分析和批量数据处理);而在 LinkedIn 上,Pig 用于发现您可能认识的人。据报道,Ebay 使用 Pig 来实现搜索优化,而 adyard 的推荐工具系统有大约一半都使用了 Pig。

安装:
下载0.12.0的Pig: http://www.trieuvan.com/apache/pig/pig-0.12.0/pig-0.12.0.tar.gz

配置:

PIG_HOME=/usr/local/pig

PATH=$PATH:$PIG_HOME/bin

PIG_CLASSPATH=$HADOOP_HOME/conf


实例:
有一段网站的访问日志如下格式

220.181.108.151 - - [31/Jan/2012:00:02:32 +0800] "GET /home.php?mod=space&uid=158&do=album&view=me&from=space HTTP/1.1" 200 8784 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
208.115.113.82 - - [31/Jan/2012:00:07:54 +0800] "GET /robots.txt HTTP/1.1" 200 582 "-" "Mozilla/5.0 (compatible; Ezooms/1.0; ezooms.bot@gmail.com)"
220.181.94.221 - - [31/Jan/2012:00:09:24 +0800] "GET /home.php?mod=spacecp&ac=pm&op=showmsg&handlekey=showmsg_3&touid=3&pmid=0&daterange=2&pid=398&tid=66 HTTP/1.1" 200 10070 "-" "Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)"
112.97.24.243 - - [31/Jan/2012:00:14:48 +0800] "GET /data/cache/style_2_common.css?AZH HTTP/1.1" 200 57752 "http://f.dataguru.cn/forum-58-1.html" "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A406"


通过如下的Pig脚本完成点击数排名前20的IP

logRecords = LOAD '/feixu/log/access_log' USING PigStorage(' ') AS (ip:chararray, link:chararray);
groupRecords = GROUP logRecords BY ip;
countRecords = FOREACH groupRecords GENERATE group AS ip, COUNT(logRecords) AS count;
sortRecords = ORDER countRecords BY count DESC;
row20 = LIMIT sortRecords 20;
STORE row20 INTO '/feixu/log/access_out2' USING PigStorage('\t');

运行的结果如下:
Hadoop的脚本语言Pig应用 - spring8743 - 我的博客
 
可以看到Pig调用自己生成的MapReduce Job如下:
Hadoop的脚本语言Pig应用 - spring8743 - 我的博客

链接:
http://pig.apache.org/docs/r0.12.0/index.html  (Apache Pig的官方文档)
http://www.ibm.com/developerworks/cn/linux/l-apachepigdataquery/  (IBM developer works的Pig介绍)
0 0