《大数据技术与应用》课程实验报告|week12|实验8|Pig——高级编程环境|验证评估函数

目录

 一、实验内容

二、实验目的

三、实验设备

四、实验步骤

步骤一

步骤二

步骤三

步骤四

步骤五

步骤六

步骤七

步骤八

步骤九

步骤十

步骤十一

步骤十二

步骤十三

步骤十四

步骤十五

步骤十六

五、实验结果

六、实验小结


  一、实验内容

验证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运行。  


(于 2023-06-05 15:31:45 发布)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值