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

news/2024/11/20 9:37:50/

目录

 一、实验内容

二、实验目的

三、实验设备

四、实验步骤

步骤一

步骤二

步骤三

步骤四

步骤五

步骤六

步骤七

步骤八

步骤九

步骤十

步骤十一

步骤十二

步骤十三

步骤十四

步骤十五

步骤十六

五、实验结果

六、实验小结


  一、实验内容

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


http://www.ppmy.cn/news/225147.html

相关文章

z3的5.1android os耗电,索尼给力!XperiaZ2/Z3系统将升级Android 5.1.1

今天,索尼公布了旗下一系列Xperia设备的更新计划,将马上向早前发布的一些手机、平板推送Android5.1 Lollipop系统更新。根据索尼官网,将获得更新的设备包括:Xperia Z3、XperiaZ3 Compact、Xperia Z3 Tablet Compact、Xperia Z2、X…

zoj 1649 Rescue

又是类似骑士拯救公主,不过这个是朋友拯救天使的故事。。。 不同的是,天使有多个朋友,而骑士一般单枪匹马比较帅~ 求到达天使的最短时间,杀死一个护卫1 units time , 走一个格子 1 unit time 。SO,杀死一个…

1.AZ900(导论部分)

AZ900(导论部分) 模块1 描述和了解云服务及其优势(15-20%——题型选择和是非题、拖拉题) 描述和了解云服务及其优势 了解在使用云服务时遇到的关键术语 了解公共、私有和混合云模型 理解基础架构即服务(IaaS) 理解…

java并发编程:重排序与happens-before介绍

文章目录 什么是重排序?顺序一致性模型与JMM的保证数据竞争与顺序一致性顺序一致性模型JMM中同步程序的顺序一致性效果JMM中未同步程序的顺序一致性效果 happens-before什么是happens-before?天然的happens-before关系 什么是重排序? 计算机在执行程序…

高配低价的新国民旗舰:联想Z5评测体验

如果要评选近期智能手机市场最受业界关注的新品,那么联想Z5想必能够有一席之地。原因就在于,这款被誉为“新国民旗舰”的手机新品,不仅寄托了联想手机太多的传承与希望,而且在正式发布之前一系列的风吹草动,都揭示了这…

努比亚Z11刷miui10+Magisk+xp+谷歌相机+红外

曾经820的旗舰机,努比亚系统本来就不怎样,现在官方不更新优化。用官方系统有点鸡肋。 还好有个大神——曦颜,还在适配MIUI。现在甚至适配了MIUI10,很流畅,虽然不能完美适配,但已经很不错了。 截止2018.07…

ZOJ-搜索专题

1002 题意 思路 深搜&#xff0c;每个格子都搜一遍。技巧dfs(cnt,ans)dfs(第几个格子&#xff0c;答案)&#xff1b; 代码 #include <iostream>using namespace std;int n,i,j,ans; char s[5][5];int c_put(int n,int m) {for (i n-1;i > 0;i --) {if (s[i][m] …

offer收割机再现,接口测试常问面试题 (附答案),对标大厂面试...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 软件测试面试题&am…