目录
一、实验内容
二、实验目的
三、实验设备
四、实验步骤
步骤一
步骤二
步骤三
步骤四
步骤五
步骤六
步骤七
步骤八
步骤九
步骤十
步骤十一
步骤十二
步骤十三
步骤十四
步骤十五
步骤十六
五、实验结果
六、实验小结
一、实验内容
验证19.5节中的Pig评估函数的示例。
二、实验目的
在MapReduce框架中,程序需要被转换为一系列的Map和Reduce阶段。可是,这不是数据分析者熟悉的编程模式。因此,为了对这个鸿沟搭建一座桥梁,建筑在Hadoop之上的、被称为Pig(猪)的抽象运用而生。Pig是一种高级编程语言,用于分析大型数据集。
三、实验设备
PC
四、实验步骤
步骤一
读入/home/biadmin/SampleDate/books.csv文件;
books=load '/home/biadmin/sampleData/books.csv' using PigStorage(',')
as(bknum:int,author:chararray,book:chararray,pubyear:int);
步骤二
读入/home/biadmin/SampleData/reviews.csv文件
reviews=load '/home/biadmin/sampleData/reviews.csv' using PigStorage(',')
as (bknum:int,reviewer:chararray,stars:int);
步骤三
用pubyear对books关系分组。
bookInYear = group books by pubyear;
也可以用Dump命令给出清单:
步骤四
计算每年出版的书的数量。
bookPerYear = foreach bookInYear generate group,COUNT($1);
dump bookPerYear;
步骤五
计算每本书的平均星级。先在bknmu上连接books关系和reviews关系。
booksAndReviews = join books by bknum,reviews by bknum;
同样用dump命令列出清单:dump booksAndReviews;
步骤六
投影一个新的关系,只能处理书名和每个阅读者给出的评价星级。
booksAndStars = foreach booksAndReviews generate book,stars;
步骤七
用book tilele对booksAndStars关系分组。
starsInBooks = group booksAndStars by book;
步骤八
查看starsInBooks的模式,代码:describe starsInBooks;
步骤九
使用FOREACH运算符。访问book title很容易,使用booksAndStars来引用stars。代码:
avgStars = foreach starsInBooks generate group,AVG(booksAndStars.stars);
dump avgStars;
步骤十
把星级所具有的值作为双精度的值如果不是想要的结果。在计算平均时,我们不能给出半颗星或三分之一颗星,我们也许想让它保留整数。为此,将平均值转换为int(整数)。代码:
avgStars = foreach starsInBooks generate group,(int)AVG(booksAndStars.stars);
dump avgStars;
想要筛选出四星级的评级,可用具有嵌套块的FOREACH运算符。
代码:
bogusAvgStars = for each starsInBooks {filteredStars = filter
booksAndStars bystars > 3;
numStars = filteredStars.stars;
generate group,(int)AVG(numStars);}
dump bogusAvgStars
步骤十一
使用EXPLAIN运算符,可以获得并理解Pig如何要解决一个特殊的MapReduce问题。explain bogusAvgStars;
步骤十二
快速查看从Grunt shell运行的hdfs命令。如果没有Grunt shell,在本地模式下打开,执行命令:./pig -x local;
步骤十三
使用FSShell命令从Grunt shell中列出当前目录。执行命令:fs -ls;
步骤十四
从Pig的本地模式下退出。执行命令:quit;
步骤十五
在MapReduce模式中调用Grunt shell。请记住它是默认模式。./pig;
步骤十六
执行FSShell并列出目录。fs -ls;所列的数据在hdfs中。
五、实验结果
如果想要在本地运行,执行命令:./pig -x local
根据前三个步骤,我们可以得到分组结果:
每年出版书的数量:
平均星级:
六、实验小结
Pig由两个组件构成:
(1)Pig Latin,编程语言
(2)运行环境,用来运行PigLatin程序。
Pig有两个执行模式:
(1)本地模式。在该模式中,Pig运行在单个的JVM上并使用本地文件系统。这个模式仅适用于用Pig分析小数据集。
(2)MapReduce模式。在此模式下,以PigLatin编写的查询被转换为MapReduce作业,并在Hadoop集群(集群可能是伪分布式或完全分布式)上运行。具有完全分布式集群的MapReduce模式用于运行较大规模的数据集。
如果Hadoop没有运行,使用桌面上的图标启动Hadoop及其组件。右击桌面并选择Open in Terminal,进入命令行。我们既可以选择从Grunt shell也可以选择从Pig脚本来运行Pig命令。无论哪种情况,都需要变动到Pig bin目录并在本地模式下启动shell运行。