时间:2024-08-31
周洪斌
Hadoop大数据平台Pig应用研究
周洪斌
(沙洲职业工学院,江苏 张家港 215600)
Apache Pig通过Pig Latin高级数据处理语言提供丰富的数据类型和转换操作,并将语句编译为一系列优化后的Hadoop MapReduce作业,从而有效简化了MapReduce程序的编写,成为Hadoop平台上大规模离线数据分析的高效工具。采用Apache Pig对电商销售数据进行分析,对进一步开展Pig应用研究具有指导意义,对通过Hadoop平台开展其他的大数据分析具有借鉴作用。
Hadoop;Pig;大数据分析
Apache Hadoop[1]具备高可靠性、高容错性、高扩展性等优点,已成为业界广泛使用的大数据分析、处理平台。Hadoop通过分布式文件系统HDFS为海量数据提供存储,通过MapReduce为海量数据提供处理功能。Hadoop目前已形成了丰富的生态系统,包括Hive、HBase、Pig等。
Apache Pig[2]提供了一个支持大规模离线数据分析的平台,使用一种称为Pig Latin的高级数据处理语言来对数据进行处理。Pig Latin提供了一组丰富的数据类型和操作符来对数据执行各种操作。Apache Pig将Pig Latin语句转换为一系列MapReduce作业,在Hadoop集群上运行,从而简化程序员的工作。Apache Pig的架构[3]如图1所示。
Pig主要包括解析器、优化器、编译器以及执行引擎。解析器负责脚本的语法及类型检查,优化器负责语句优化,编译器将优化后的语句编译为一系列MapReduce作业,最后由执行引擎将作业提交给MapReduce。
Pig Latin[4]语言侧重于对数据的查询和分析,与关系数据库的数据库操作语言非常类似,但是不对数据执行修改和删除操作。Pig Latin语言运行在Hadoop的分布式文件系统上,可以在短时间内处理海量数据,适合用于大数据分析。Pig编译器能将Pig Latin的分析语句转化为一系列经过优化处理的MapReduce运算,大大降低了大数据处理的难度。使用Pig Latin对数据处理[5]的过程如图2所示。
图1 Apache Pig体系架构
图2 Pig数据分析基本流程
(1)读取数据
Pig Latin使用LOAD语句从文件系统中加载数据,如:
A = LOAD 'sales.txt' USING PigStorage(',')AS (id:int,name:chararray);
表示从sales.txt文件中加载数据,各个数据项的分隔符为英文逗号,数据项类型分别为整型和字符数组。Pig Latin支持丰富的数据类型[4],如表1所示。
(2)数据转换操作
Pig Latin定义了一系列的数据转换操作[4],如表2所示。Pig Latin的每一条语句执行单个的数据转换操作,易于编写。
(3)输出结果
STORE用于把结果保存到文件系统中,如:
STORE A INTO 'myoutput' USING PigStorage ('*');
表示把结果保存到myoutput文件中,数据项之间用*作为分隔符。
DUMP用于把结果显示到屏幕上,如:
DUMP A;
表示把结果集A中所有的数据输出到屏幕上。
表1 Pig Latin常用的数据类型
表2 Pig Latin常用的转换操作
现需对某电商平台的销售数据[6]进行分析,分别统计不同商品的销售数量、会员购买情况以及购买终端分析等,商家可以根据数据分析结果来精准调整销售策略,以提高经济效益。
该销售数据的部分样例如下:
275302,京东,华为荣耀畅玩5X,荣耀 畅玩5X(KIW-AL10)3GB+16GB内存版 灰色 移动联通电信4G手机 双卡双待,钻石会员,京东iPhone客户端,北京,落日金,1399
412435,京东,华为荣耀畅玩5X,【豪华套装版】荣耀 畅玩5X(KIW-TL00H)2GB+16GB内存版 灰色 移动4G手机 双卡双待,钻石会员,京东Android客户端,广东,暗夜灰,1199
分析该文件,得出该销售数据每行的格式为编号、电商平台、商品型号、商品简介、会员等级、购买渠道、购买地区、商品颜色、价格,每个数据项之间用逗号作为分隔符。
因此,首先使用Load指令从HDFS文件系统中加载数据,命令如下:
A = LOAD 'sales.txt' USING PigStorage(',')AS (id:int,platform:chararray,xinhao:chararray,title:chararray,memberlevel:chararray,fromplatform:chararray,area:chararray,color:chararray,price:float,productSize:chararray);
根据数据文件格式,编号用整型,价格用浮点型,其他数据项用字符数组类型。
(1)统计各型号的销售量
B = GROUP A BY xinhao;
C = FOREACH B GENERATE group,COUNT(A.id) AS num;
DUMP C;
根据商品型号分组统计销售数量,输出结果的部分样例如下:
(华为荣耀4A,153103)
(华为荣耀X2,21459)
(华为荣耀畅玩4C,110246)
(华为荣耀畅玩5X,142850)
(2)统计不同类别会员的购买量
B = GROUP A BY memberlevel;
C = FOREACH B GENERATE group,COUNT(A.id) AS num;
DUMP C;
根据会员等级分组统计购买量,输出结果的部分样例如下:
(金牌会员,107063)
(钻石会员,162985)
(铜牌会员,42052)
(银牌会员,111900)
(3)统计不同终端的购买量
B = GROUP A BY fromplatform;
C = FOREACH B GENERATE group,COUNT(A.id);
DUMP C;
汇总得到不同终端的购买量,输出结果的部分样例如下:
(微信购物,13727)
(手机QQ购物,5541)
(京东PC客户端,120516)
(京东iPad客户端,1678)
(京东iPhone客户端,55053)
(京东Android客户端,230800)
(4)统计各省份的销售数量
B = GROUP A BY area;
C = FOREACH B GENERATE group,COUNT(A.id);
DUMP C;
统计出不同地区的销售数量,输出结果的部分样例如下:
(上海,8005)
(云南,1906)
(北京,21924)
(广西,6991)
(江苏,18135)
(江西,2473)
如果要直接分析某个省份,如江苏省的销售数量,可以继续用下面的命令:
D = FILTER C BY group == '江苏';
DUMP D;
(5)分析最受消费者欢迎的3种颜色
B = GROUP A BY color;
C = FOREACH B GENERATE group,COUNT(A.id) AS num;
D = ORDER C BY num DESC;
E = LIMIT D 3;
DUMP E;
汇总得到不同颜色商品的销售数量,排序后输出销量最多的三种颜色的商品,结果如下:
(白,175136)
(破晓银,77498)
(黑,59054)
Pig通过提供Pig Latin语言,用户只需要编写相对简单的脚本就可以在Hadoop分布式集群中自动并行处理与分析数据,有效简化了MapReduce程序的编写。通过Pig对电商平台的销售数据进行分析,对进一步开展Pig应用研究具有指导意义,对通过Hadoop平台开展其他的大数据分析具有借鉴作用。
[1] The Apache Software Foundation. Apache Hadoop [EB/OL]. (2019-02-06) [2019-07-10]. http://hadoop.apache.org/.
[2] The Apache Software Foundation. Apache Pig [EB/OL]. (2018-06-18) [2019-07-12]. https://pig.apache.org/.
[3] w3cschool.cn. Apache Pig架构 [EB/OL]. (2016-12-28) [2019-07-21]. https://www.w3cschool.cn/apache_pig/apache_pig_ architecture.html.
[4] The Apache Software Foundation. Pig Latin Basics [EB/OL]. (2017-06-21) [2019-07-22]. http://pig.apache.org/docs/r0.17.0/ basic.html.
[5] 陈晓, 于金良, 朱志祥. 基于Pig_Spark的分布式数据分析处理平台[J]. 信息技术, 2017 (7): 45-48, 55.
[6] 黄东军. Hadoop大数据实战权威指南[M]. 北京: 电子工业出版社, 2017: 331-361.
Study of Pig-Application Based on Hadoop Big Data Platform
Zhou Hongbin
( Shazhou Professional Institute of Technology, Zhangjiagang 215600, Jiangsu, China )
Apache Pig provides rich data types and transformation operations through a high-level language Pig Latin, and compiles statements into a series of optimized Hadoop MapReduce jobs, thus effectively simplifying the programming of MapReduce programs and becoming an efficient tool for analyzing very large offline data sets on Hadoop platform. The analysis of e-commerce sales data by Apache Pig is of guiding significance for further study on Pig application and reference for other big data analysis through Hadoop platform.
Hadoop; Pig; Big Data Analysis
TP391
A
1009-8429(2019)03-0003-05
2019-08-25
江苏省高等职业教育产教深度融合实训平台建设项目(201618)
周洪斌(1981-),男,沙洲职业工学院电子信息工程系副教授。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!