2021-06-10

1、需求描述
在如今互联网飞速发展的时代,许多地方都需要运用大数据的技术。大数据,IT行业术语,是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。现在的社会是一个高速发展的社会,科技发达,信息流通,人们之间的交流越来越密切,生活也越来越方便,大数据就是这个高科技时代的产物。阿里巴巴创办人马云来台演讲中就提到,未来的时代将不是IT时代,而是DT的时代,DT就是Data Technology数据科技,显示大数据对于阿里巴巴集团来说举足轻重。有人把数据比喻为蕴藏能量的煤矿。煤炭按照性质有焦煤、无烟煤、肥煤、贫煤等分类,而露天煤矿、深山煤矿的挖掘成本又不一样。与此类似,大数据并不在“大”,而在于“有用”。价值含量、挖掘成本比数量更为重要。对于很多行业而言,如何利用这些大规模数据是赢得竞争的关键。本次实验需要运用Spark的RDD基本操作及键值对操作,使用RDD编程解决世纪具体问题。
2、环境介绍
本次实验的环境
操作系统:Ubuntu16.04
Spark版本:2.4.0
Python版本:3.4.3
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。
3、数据来源描述
3.1当今大数据的来源除了专业研究机构产生大量的数据外(CERN 的离子对撞机每秒运行产生的数据高达40TB),与企业经营相关的大数据可以划分为四个来源:1.越来越多的机器配备了连续测量和报告运行情况的装置。几年前,跟踪遥测发动机运行仅限于价值数百万美元的航天飞机。现在,汽车生产商在车辆中配置了监视器,连续提供车辆机械系统整体运行情况。一旦数据可得,公司将千方百计从中渔利。这些机器传感数据属于大数据的范围。2.计算机产生的数据可能包含着关于因特网和其他使用者行动和行为的有趣信息,从而提供了对他们的愿望和需求潜在的有用认识。3.使用者自身产生的数据/信息。人们通过电邮、短信、微博等产生的文本信息。 4.至今最大的数据是音频、视频和符号数据。这些数据结构松散,数量巨大,很难从中挖掘有意义的结论和有用的信息。
3.2本次作实验提供分析数据data.txt,该数据集包含了某大学计算机系的成绩,数据格式如下所示:
请根据给定的实验数据,在pyspark中通过编程来计算以下内容:
(1)该系总共有多少学生;
(2)该系共开设了多少门课程;
(3)Tom同学的总成绩平均分是多少;
(4)求每名同学的选修的课程门数;
(5)该系DataBase课程共有多少人选修;
(6)各门课程的平均分是多少;
(7)使用累加器计算共有多少人选了DataBase这门课。

(1)对于两个输入文件A和B,编写Spark独立应用程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新文件C。本文给出两个输入文件(A.txt、B.txt)。

(2)每个输入文件表示班级学生某个学科的成绩,每行内容分别由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写Spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。本文给出三门课程的成绩(Algorithm.txt、Database.txt、Python.txt)。
4、数据上传及上传结果查看
4.1
lines = sc.textFile(’file:///usr/local/sparksqldata/data.txt’)
4.2
from pyspark import SparkContext
sc = SparkContext(”local”,”sparksqldata”)
lines1 = sc.textFile(”file:///usr/local/spark/sparksqldata/A”)
lines2 = sc.textFile(”file:///usr/local/spark/sparksqldata/B”)
4.3
from pyspark import SparkContext
sc = SparkContext(”local”,”sparksqldata”)
lines1 = sc.textFile(”file:///usr/local/spark/sparksqldata/Algorithm”)
lines2 = sc.textFile(”file:///usr/local/spark/sparksqldata/Database”)
lines3 = sc.textFile(”file:///usr/local/spark/sparksqldata/Python”)
5、数据处理过程描述
5.1
(1)该系总共有多少学生;
在这里插入图片描述
(2)该系共开设了多少门课程;
在这里插入图片描述
(3)Tom同学的总成绩平均分是多少;
在这里插入图片描述
(4)求每名同学的选修的课程门数;
在这里插入图片描述
(5)该系DataBase课程共有多少人选修;
在这里插入图片描述
(6)各门课程的平均分是多少;
在这里插入图片描述
在这里插入图片描述
(7)使用累加器计算共有多少人选了DataBase这门课。
在这里插入图片描述

5.2
(1)在当前目录/usr/local/spark/mycode/remdup新建remdup.py文件;
在这里插入图片描述
(2)然后在目录/usr/local/spark/mycode/remdup下,执行下面的命令、执行程序(注意执行程序时请先退出pyspark shell,否则会出现“地址已在使用”的警告);
$ python3 remdup.py
(3)在目录/usr/local/spark/mycode/remdup/result下即可得到结果文件part-00000。
在这里插入图片描述
5.3
(1)在当前目录/usr/local/spark/mycode/avgscore,新建文件avgscore.py;
在这里插入图片描述
(2)最后在目录/usr/local/spark/mycode/avgscore下执行下面命令执行程序(注意执行程序时请先退出pyspark shell,否则会出现“地址已在使用”的警告)。
$ python3 avgscore.py
(3)在目录/usr/local/spark/mycode/avgscore/result下即可得到结果文件part-00000。
在这里插入图片描述
6、经验总结
在这次实验中,我们运用了Spark的RDD基本操作及键值对操作,使用RDD编程解决世纪具体打问题。在现代社会中,很多地方都需要运用到大数据。大数据在当今社会已然成为了一个不可或缺的环节。Spark作为大数据分析处理引擎,参考了大量MapReduce的设计思路,但也在mapreduce基础上做了更多抽象,这样的接口设计使得spark编程更加便利。Spark抽象出来的有RDD DataSet DataFrame DStream等。Spark作为分布式数据处理引擎,本质还是解决2个问题,数据切分和代码逻辑切分。数据切分,这样可以使得分布式集群中每台计算机都处理一部分数据,代码逻辑切分,使得分布式集群中每台计算机领取各自的处理任务,并行执行任务。RDD作为Spark抽象出来的算子,内部就隐含了这2步最关键的逻辑和流程。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值