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

news2024/11/17 5:52:47

目录

 一、实验内容

二、实验目的

三、实验设备

四、实验步骤

步骤一

步骤二

步骤三

步骤四

步骤五

步骤六

步骤七

步骤八

步骤九

步骤十

步骤十一

步骤十二

步骤十三

步骤十四

步骤十五

步骤十六

五、实验结果

六、实验小结


  一、实验内容

验证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.coloradmin.cn/o/611906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apache网页的日志分割与优化

Apache网页的日志分割与优化 一、日志分割的作用二、rotatelogs 分割1.修改apache服务的主配置文件2.创建分割日志保存目录3.浏览器访问 三、AWStats 分析系统1.将安装AWStats 所需软件包传到/opt目录下2.安装 AWStats 软件包3.为要统计的站点建立配置文件4.修改自动生成的 aws…

电表的698通信协议

原文连接:https://blog.csdn.net/ss86655/article/details/109997891 该协议规定了用电信息的数据交换过程,一般用于主站与电能表之间、终端与电能表之间的数据交换,主站与终端一般用不同的客户机地址来区分。1、通信架构 有两种方向的数据…

linux系统中代码突然无法执行,没有权限访问文件,但是可以在文件管理器中查看文件

前言 这段时间遇到了一个非常离谱的问题,我的只要设计移动硬盘中数据的所有代码突然无法运行,我折腾了很久一直觉得是移动硬盘坏了,但拿到其他电脑上去是可以运动的。今天终于偶然发现了问题。 直接说结论: 移动硬盘的挂载点变了…

SQL-DML、DQL查询数据

SQL-DML、DQL查询数据 1 DML DML主要是对数据进行增(insert)删(delete)改(update)操作。 1.1 添加数据 给指定列添加数据 INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);给全部列添加数据 INSERT…

MySQL数据库性能优化技巧介绍

MySQL是目前最流行和广泛使用的开源关系型数据库之一,随着数据量的增长和访问负载的提高,优化数据库性能变得至关重要,以确保系统能够高效地处理大量的并发请求。本文将记录一些MySQL数据库性能优化的技巧,提高数据库的运行效率&a…

程序员——应届生毕业,竟有20k高薪岗位?!

马士兵优极限训练营让我在技术和个人能力上都有了很大的提升。在未来的职业生涯中,我会继续努力,不断学习和成长,为自己和社会做出更大的贡献 01 选择大数据 只因更有前景 我是计算机专业出身,但是在大学的时候我对大数据行业更…

vue3 ---- 递归组件生成menu菜单 路由守卫鉴权

目录 递归组件​ el-menu 父组件 子组件 路由 Vue路由守卫实现登录鉴权 全局守卫 路由独享的守卫 组件内的守卫 完整的导航解析流程 对于一些有规律的DOM结构,如果我们再一遍遍的编写同样的代码,显然代码是比较繁琐和不科学的,而且…

5个有效方法教你如何正确使用云渲染,防错必备!

随着技术的进步和计算能力的提升,云渲染成为了现代计算机图形学和动画制作中不可或缺的一环。无论是在电影、游戏还是建筑可视化等领域,渲染图像的质量和效率都对最终结果有着巨大的影响。然而,云渲染也面临着一些潜在的问题,如渲…

一文看懂B TREE和B+TREE数据结构实现过程及数据存储结构

概述 一文看懂B TREE和BTREE数据结构实现过程及数据存储结构 一、B tree数据结构实现过程 这里有一个陌生区关于 Max. Degree,这个你可以理解为阶,也可以理解为度,即B 树的阶数(一个节点存储的键的数量) 这里有一个陌生区关于…

简单上手!快速将另一个报表的页面添加到 FastReport .NET!

FastReport 是功能齐全的报表控件,可以帮助开发者可以快速并高效地为.NET,VCL,COM,ActiveX应用程序添加报表支持,由于其独特的编程原则,现在已经成为了Delphi平台最优秀的报表控件,支持将编程开…

ROS:古月居第一次作业(话题与服务编程、动作编程、TF编程)

一.话题与服务编程 话题与服务编程:通过代码新生一只海龟,放置在(5,5)点,命名为“turtle2”;通过代码订阅turtle2的实时位置并打印在终端;控制turtle2实现旋转运动; demo_turtle.l…

智能出行更安全,亚马逊云科技携手木卫四助汽车客户安全合规出海

木卫四(北京)科技有限公司在汽车网络安全领域拥有独特专业知识,其融合人工智能算法的安全检测引擎可以不依赖车辆中安装的代理软件,只需几周即可快速部署实施,是汽车网络安全领域的技术领先者。 在亚马逊云科技初创团…

消息中间件之ActiveMq安装

文章目录 前言安装下载地址安装 使用控制台调整配置文件 前言 2023年年中了,又遇到了老朋友activeMq,上次接触activeMq还是在15年的时候,系统中用到了这个消息中间件。 阔别8年之久,竟然又用到了这个老家伙! 安装 要…

【6.05 代随_48day】 打家劫舍、打家劫舍 II、打家劫舍 III

打家劫舍、打家劫舍 II、打家劫舍 III 打家劫舍1.方法图解步骤代码 打家劫舍 II1.方法代码 打家劫舍 III图解步骤代码 打家劫舍 力扣连接:198. 打家劫舍(中等) 1.方法 确定dp数组(dp table)以及下标的含义 dp[i]&am…

如何利用 Electron 快速开发一个桌面端应用

前言 一直以来都有听说利用electron可以非常便捷的将网页应用快速打包生成为桌面级应用,并且可以利用 electron 提供的 API 调用原生桌面 API 一些高级功能,于是这次借着论证环信 Web 端 SDK 是否可以在 electron 生成的桌面端正常稳定使用,…

基于国产器件的KCF跟踪算法实现与验证

在国产的FT-M6678 DSP上实现KCF算法是我研究生期间的主要工作,KCF算法的原理与实现已经在之前的文章以及我的Gitee仓库中有部分介绍。这里主要介绍DSP与上位机通信的方式,以及XDMA Linux驱动的使用。具体的设计细节可以看我的毕业设计补充材料。 SRIO与…

SpringBoot 使用validator进行参数校验(实例操作+注意事项+自定义参数校验)

一、实例操作 ①、引入依赖 <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>6.0.4.Final</version></dependency> ②、创建实体类 package com.springboot.entity;im…

蓝桥杯2022年第十三届决赛真题-出差

题目描述 A 国有 N 个城市&#xff0c;编号为 1 . . . N。小明是编号为 1 的城市中一家公司的员工&#xff0c;今天突然接到了上级通知需要去编号为 N 的城市出差。 由于疫情原因&#xff0c;很多直达的交通方式暂时关闭&#xff0c;小明无法乘坐飞机直接从城市 1 到达城市 N&a…

【教学类-10-03】20230603《空心图案3*2-单元格不重复》( 随机图案拼贴)(中班主题)

作品展示&#xff1a; 背景需求&#xff1a; 最近在做小课题结题资料&#xff0c;看到之前做过的几个学具项目&#xff0c;其中的空心图案拼贴画很不错&#xff08;中班上学期做过&#xff09;想到中6班的孩子还没有玩过&#xff0c;就想再打印一套学具&#xff08;中班下学期…

chat聊天系统消息消费时遇到的问题及优化思路(二)

1、前言 考虑下面几个条件下如何提升kafka的消费速度 消息要求严格有序&#xff0c;如chat聊天消息业务处理速度慢&#xff0c;如处理一条数据需要100ms分片不合理&#xff0c;如有的分区很闲&#xff0c;有的分区消息数量积压 2、解决方案 1、顺序问题 关于消息消费时存在…