大数据编程期末大作业

news2024/9/23 3:11:53

大数据编程期末大作业

文章目录

  • 大数据编程期末大作业
    • 一、Hadoop基础操作
    • 二、RDD编程
    • 三、SparkSQL编程
    • 四、SparkStreaming编程

一、Hadoop基础操作

  1. 在HDFS中创建目录 /user/root/你的名字 例如李四同学 /user/root/lisi

    首先我们需要启动hdfs,我们直接在终端输入如下命令:

    start-dfs.sh
    

    我们在终端输入如下命令创建目录:

    hadoop fs -mkdir /user
    hadoop fs -mkdir /user/root
    hadoop fs -mkdir /user/root/***(这里是你自己的名字)
    

    上面是逐个创建文件夹,我们还可以使用参数-p一次性创建多级目录:

    hadoop fs -mkdir -p /user/root/***
    
  2. 创建本地文件a.txt,文件内容:You love Hadoop ,并将改文件上传到HDFS中第1题所创建的目录中

    我们直接在终端的root目录下面创建我们的本地文件并输入题目要求的内容:

    vim a.txt
    

    然后我们再在终端输入上传命令:

    hadoop fs -put a.txt /user/root/***
    
  3. 查看上传到HDFS中的a.txt文件的内容

    我们直接在终端输入查看命令:

    hadoop fs -cat /user/root/***/a.txt
    

    在这里插入图片描述

  4. 在Hadoop官方的示例程序包hadoop-mapreduce-examples-3.1.4.jar中,包括计算Pi值的测试模块,使用hadoop jar命令提交计算Pi的MapReduce任务

    我们首先进入到hadoop下的mapreduce目录中:

    cd /usr/local/servers/hadoop/share/hadoop/mapreduce/
    

    然后执行如下命令即可计算Pi:

    hadoop jar hadoop-mapreduce-examples-3.1.3.jar pi 5 5
    

    在这里插入图片描述

    可以看出精度不是很高,上面命令后面的两个数字含义是,第一个5是运行5次map任务,第二个5是每个map任务投掷次数,总投掷次数就是两者相乘,想要提高精度就可以让数字变大,但是很容易出现作业计算失败的异常,这是因为计算内存不够,所以不能调的太大。

二、RDD编程

现有一份2019年我国部分省份高考分数线数据文件exam2019.csv,共有四个数据字段,字段说明如表1所示:

​ 表1 高考分数线数据字段说明

字段名称说明
地区省、直辖市或自治区
考生类别考生报考类别,如理科
批次划定的学校级别,如本科批次
分数线达到所属批次的最低分

在这里插入图片描述

为了解2019年全国各地的高考分数线情况,请使用Spark编程,完成以下需求:

  1. 读取exam2019.csv并创建RDD

    我们首先将该文件上传到我们的终端,我直接放在root目录下的。

    然后我们启动pyspark:

    pyspark
    

    然后我们读取我们的文件并创建RDD:

    data = sc.textFile("file:///root/exam2019.csv")
    
  2. 查找出各地区本科批次的分数线

    # 对RDD数据进行map操作,拆分每一行数据
    data_map = data.map(lambda x: x.split(","))
    
    # 对拆分后的RDD进行filter操作,过滤出本科的数据
    data_filter = data_map.filter(lambda x: x[2] == '本科')
    
    # 对过滤后的RDD进行map操作,抽取出地区和分数线
    data_result = data_filter.map(lambda x:(x[0],x[3]))
    
    # 对抽取后的RDD进行reduceByKey操作,按地区进行分组
    data_reduce = data_result.reduceByKey(lambda x,y:x+','+y)
    
    # 打印结果
    data_reduce.collect()
    

在这里插入图片描述

  1. 将结果以文本格式存储到HDFS上,命名为/user/root/你的名字exam2019

    data_reduce.saveAsTextFile("hdfs://localhost:9000/uesr/root/*** exam2019")
    

三、SparkSQL编程

某餐饮企业预备使用大数据技术对过往餐饮点评大数据进行分析以提高服务与菜品质量,实现服务升级,具体情况如下:现有一份顾客对某城市餐饮店的点评数据restaurant.csv,记录了不同类别餐饮店在口味、环境、服务等方面的评分,数据共有12列,前10列数据字段的说明如表2所示,最后两列的数据为空则不描述。

​ 表2 顾客对某城市餐饮店的点评数据字段说明

字段名称字段名称
类别餐饮店类别
行政区餐饮店所在位置区域
点评数有多少人进行了点评
口味口味评分
环境环境评分
服务服务评分
人均消费人均消费(单位:元)
城市餐饮店所在城市
Lng经度
Lat纬度

在这里插入图片描述

为探究人们对该城市餐饮店的点评分布情况,分析客户在餐饮方面的消费喜好,请使用Spark SQL进行编程,完成如下需求:

  1. 读取restaurant.csv数据,删除最后为空值的两列,再删除含有空值的行

    # 读取文件
    df = spark.read.csv("file:///root/restaurant.csv", header=True)
    
    # 删除最后两列
    df = df.drop(df._c10).drop(df._c11)
    
    # 删除含有空值的行
    df = df.na.drop()
    

    在这里插入图片描述

  2. 筛选出口味评分大于7分的数据

    result1 = df.filter(df.口味 > 7)
    

    在这里插入图片描述

  3. 统计各类别餐饮店点评数,并按降序排列

    # 选出需要的列,转换成rdd
    dps = df.select('类别', '点评数').rdd
    
    # 计算每种类别餐饮点评数的总和
    dps = dps.map(lambda x:(x[0], int(x[1]))).reduceByKey(lambda x,y: x+y).sortBy(lambda x: x[1], False)
    
    # 将计算得出的表格标签进行修改
    dps = dps.toDF().withColumnRenamed('_1', '类别').withColumnRenamed('_2', '点评数').show()
    

    在这里插入图片描述

  4. 将步骤2和步骤3的结果保存到HDFS上,命名为/user/root/你的名字restaurant

    result1.saveAsTextFile("hdfs://localhost:9000/uesr/root/*** kouwei7")
    dps.saveAsTextFile("hdfs://localhost:9000/uesr/root/*** dps")
    

四、SparkStreaming编程

现有一份某饭店的菜单数据文件menu.txt,部分数据如表3所示,每一行有3个字段,分别表示菜品ID、菜名和单价(单位:元)。

​ 表3 某饭店的菜单数据

在这里插入图片描述

一位顾客依次点了红烧茄子、京酱肉丝和剁椒鱼头共3个菜,为实时计算顾客点餐的费用,请使用Spark streaming 编程完成以下操作:

  1. 在虚拟机上启动8888端口

    直接在终端输入如下命令:

    nc -lk 8888
    
  2. 使用Spark streaming连接虚拟机的8888端口,并实时统计顾客点餐的总费用

    我们创建一个py程序名为prizeSum.py,并填入如下代码:

from __future__ import print_function
from pyspark import SparkContext
from pyspark.streaming import StreamingContext
import sys


# 从sys.argv中获取主机名和端口号
if len(sys.argv) != 3:
    print("Usage:prizeSum.py <hostname> <port>", file=sys.stderr)
    exit(-1)

# 创建SparkContext
sc = SparkContext(appName="pythonSparkStreamingPrizeSum")

# 创建StreamingContext
ssc = StreamingContext(sc, 5)

# 创建函数,实现累加
def accumulate(values, sums):
    return sum(values) + (sums or 0)

# 设置检查点目录
ssc.checkpoint("file:///root/test/")

initialStateRDD = sc.parallelize([])

# 从指定的主机和端口接收数据流
lines = ssc.socketTextStream(sys.argv[1], int(sys.argv[2]))

# 将数据流中的每一行转换为一个元组
costs= lines.map(lambda x: x.split(" "))

# 将每一行的价格累加
totalCost = costs.map(lambda x: ("总价", int(x[2]))).updateStateByKey(accumulate, initialRDD=initialStateRDD)
totalCost.map(lambda x: x.values())

# 打印结果
totalCost.pprint()

# 启动Streaming处理流
ssc.start()

# 等待程序终止
ssc.awaitTermination()
  1. 启动Spark streaming程序,在8888端口输入顾客所点的菜单数据,如“3 红烧茄子15”,查看顾客本次点餐的总费用

    我们启动我们创建的py程序:

    python3 prizeSum.py localhost 8888
    

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/138126.html

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

相关文章

JavaScript for 循环

文章目录JavaScript for 循环JavaScript 循环使用for循环不同类型的循环For 循环语句 1语句 2语句 3For/In 循环JavaScript for 循环 循环可以将代码块执行指定的次数。 JavaScript 循环 如果您希望一遍又一遍地运行相同的代码&#xff0c;并且每次的值都不同&#xff0c;那么…

MCU-51:单片机DS18B20温度报警器

目录一、DS18B201.1 DS18B20介绍1.2 引脚及应用电路1.3 内部结构框图1.4 存储器结构二、单总线2.1 单总线介绍2.2 单总线电路规范2.3 单总线时序结构三、DS18B20操作流程四、DS18B20数据帧五、温度存储格式六、代码演示6.1 温度读取6.2 温度报警器注意&#xff1a;一定要看一、…

Qt OpenGL(04)Sierpinski 镂垫 3D 版

文章目录三维 Siepinski 镂垫相关代码main.cppHelp.hppWidget.hWidget.cpp顶点着色器片元着色器总结三维 Siepinski 镂垫 把前面的二维Sierpinski程序转换成一个生成三维Sierpinski镂垫的程序&#xff0c;也就是说要绘制的镂垫不再只是限制在一个平面里。我们可仿效对二维镂垫所…

什么? @ConditionalOnMissingBean 你没设置value?

序 这两天再看 公司 之前写的组件的代码&#xff0c;不看不知道&#xff0c;一看吓一跳。。。。这里就说其中一个 不知道你在写组件中的 Bean 加载的时候 怎么写&#xff1f; 方法一 直接META-INF/spring.factories 写 org.springframework.boot.autoconfigure.EnableAuto…

消息队列应用与原理剖析

什么是消息队列 消息队列&#xff1a;在消息的传输过程中保存消息的容器&#xff0c;生产者和消费者不直接通讯&#xff0c;依靠队列保证消息的可靠性&#xff0c;避免了系统间的相互影响。系统间的数据流通道 应用场景 异步处理&#xff1a;用户注册后&#xff0c;需要发注…

linux C--管道

这里写自定义目录标题基本概念管道特征编写模型有名管道模型示例demowrite.cread.c结果记录笔记1无名管道基本概念 进程间存在天然的壁垒,进程间通信(Interperocess Communication,IPC)是指二个或者多个进程之间进行数据交换的过程 管道特征 管道是进程间通讯的一种常用方法…

Tomcat安装及使用

1.下载 Tomcat官网 选择系统 2.解压 解压到没有中文路径的文件夹中,解压路径会在配置环境变量时用到 3.配置环境变量 在电脑点击鼠标右键->点击属性>点击高级系统设置->点击环境变量->新建系统变量 1.新建系统变量 变量名为CATALINA_HOME&#xff0c;变…

【unity3D】DoTween动画插件(下)

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的学习笔记 &#x1f236;本篇是unity的DoTween动画插件可视化编辑 DoTween动画插件&#xff08;可视化编辑&#xff09;DOTween AnimationDoTween Path路径编辑器Scene…

【Linux】Linux编辑器—vim使用

目录1.vim的基本概念2.vim基本操作3.vim命令模式命令集4.vim末行模式命令集5.简单vim配置6.使用sudo提权为什么要学习vim&#xff1f; “在 Linux 系统中一切都是文件&#xff0c;而配置一个服务就是在修改其配置文件的参数”。 而且在日常工作中大家也肯定免不了要编写文档&am…

学习C语言笔记:浮点类型float、double和long double

浮点类型能表示包括小数在内更大范围的数。浮点数的表示类似于科学计数法&#xff08;即用小数乘以10的幂来表示数字&#xff09;。该记数系统常用于表示非常大或非常小的数。 float C语言规定&#xff0c;float类型必须至少能表示6位有效数字&#xff0c;且取值范围至少是~…

【阶段二】Python数据分析Pandas工具使用03篇:数据预处理:多表合并与连接

本篇的思维导图: 数据预处理:多表合并与连接 将表结构相同(即变量个数和变量类型均相同)的多张表纵向合并到一张长表中,或者将多张表的变量水平扩展到一张宽表中。 需要注意的是,对于多表之间的纵向合并,则必须确保多表的列数和数据类型一致;对于多表之间的水平扩展,…

电子邮件帐户受损报告,请查收!

我们收到有关恶意访问 Ambire Wallet 电子邮件帐户的报告。 所有这些账户都是用在 CoinMarketCap/Ledger/其他黑客事件中被破坏的电子邮件地址注册的。 我们的内部调查显示&#xff0c;Ambire 的内部系统没有被泄露。我们调查的所有受影响的账户都是因为他们的电子邮件被泄露&…

FOFA(一): FOFA入门

文章目录一、FOFA是什么二、Fafo的使用1. 用户注册2. 一般使用3. 高级用法三、界面解释一般检索结果ip聚合:统计:以ip为单位的资产数据统计:四、API参考一、FOFA是什么 部署在互联网上的网络设备资产信息搜索引擎。旨在尽可能多的对全球IT设备资产进行信息收集、 漏洞扫描&…

java知识图谱+Java语言特点+常用dos命令+Java程序总结

java知识图谱高级语言Java语言特点注释单行注释 //多行注释/* */作用&#xff1a;1.对程序的编写进行解释说明&#xff0c;增强可读性2.调试所写代码单行/多行注释不参与编译&#xff1b;多行注释不可嵌套使用文档注释&#xff08;Java特有&#xff09;/** */注释内容可被JDK提…

系统治理 体系规划新型数据安全防护体系

声明 本文是学习2022中国工业数据勒索形势分析报告. 下载地址 http://github5.com/view/55028而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 工业数据勒索应急响应事件攻击者分析 应急响应事件攻击者分析以2022年1-9月所有工业数据勒索应急数据为支撑…

Hadoop HDFS

Hadoop HDFS分布式文件系统分布式文件系统的优点HDFS(Hadoop分布式文件系统)应用常见hdfs集群存储机制元数据管理namespace分布式文件系统 既然我们要学习hdfs那就不能不提分布式文件系统 文件系统是一种存储和组织数据的方法&#xff0c;实现了数据的存储、分级组织、访问和…

Linux DNS 解析与配置 nslookup使用 与 /etc/resolv.conf文件的配置

Linux DNS 解析与配置 序 当我接收到一批新的服务器时&#xff0c;尝试连接外网&#xff0c;比如访问百度的首页&#xff1a; curl www.baidu.com发现报错&#xff0c;不能解析正确的主机名。这个其实就是主机在解析主机名时没能正确发现对应的主机的 ip。当我们使用类似于域…

华为交换机配置笔记

交换机(Switch)是一种用于电信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路,最常见的交换机是以太网交换机,其他常见的还有电话语音交换机、光纤交换机等,交换机是集线器的升级替代产品,理论上讲交换机就是按照通信两端传输信息的需求,将需要的…

ONES 入选极客公园「2022 中国创新力量 50 」榜单

极客公园调研发现&#xff0c;2022 年是企业服务的「双杀」转折点&#xff1a;内部造血的难度升级&#xff0c;外部输血的可能性降低。为了表彰逆流而上的企服公司&#xff0c;极客公园对其给予了重点鼓励和点评。其中&#xff0c;企业级研发管理平台 ONES 入选了极客公园 2022…

vue js游戏,抗疫小游戏,抗疫的汤圆,仅以此小游戏献给所有为抗击疫情做出贡献的人

vue js游戏&#xff0c;抗疫小游戏&#xff0c;抗疫的汤圆&#xff0c;仅以此小游戏献给所有为抗击疫情做出贡献的人 完整代码下载地址&#xff1a;vue js游戏&#xff0c;抗疫小游戏&#xff0c;抗疫的汤圆 建议在pc上使用Chrome浏览器进行访问&#xff0c;如果只能手机玩&a…