RDD编程初级实践

1、需求描述

在当今大数据背景下,许多东西都需要利用大数据的技术去解决。此次实验目的是为了让我们更加熟悉Spark的RDD基本操作及键值对操作;熟悉使用RDD编程解决实际具体问题的方法。为此设定以下需求:

1.pyspark交互式编程

提供分析数据data.txt,该数据集包含了某大学计算机系的成绩,数据格式如下所示:
Tom,DataBase,80
Tom,Algorithm,50
Tom,DataStructure,60
Jim,DataBase,90
Jim,Algorithm,60
Jim,DataStructure,80

根据data.txt数据,在pyspark中通过RDD编程来计算以下内容。

2.编写独立应用程序实现数据去重

对于两个输入文件A和B,编写Spark独立应用程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新文件C。本文给出门课的成绩(A.txt、B.txt)下面是输入文件和输出文件的一个样例。
输入文件A的样例如下:
20200101 x
20200102 y
20200103 x
20200104 y
20200105 z
20200106 z

输入文件B的样例如下:
20200101 y
20200102 y
20200103 x
20200104 z
20200105 y

根据输入的文件A和B合并得到的输出文件C的样例如下:
20200101 x
20200101 y
20200102 y
20200103 x
20200104 y
20200104 z
20200105 y
20200105 z
20200106 z

3.编写独立应用程序实现求平均值问题

每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写Spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。本文给出门课的成绩(Algorithm.txt、Database.txt、Python.txt),下面是输入文件和输出文件的一个样例。
Algorithm成绩:
小明 92
小红 87
小新 82
小丽 90
Database成绩:
小明 95
小红 81
小新 89
小丽 85
Python成绩:
小明 82
小红 83
小新 94
小丽 91
平均成绩如下:
(小红,83.67)
(小新,88.33)
(小明,89.67)
(小丽,88.67)
需要Spark的RDD基本操作及键值对操作使用RDD编程解决实际具体问题的方法。

2、环境介绍

Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
spark用于实现快速通用的集群计算平台,用来构建大型的、低延迟的数据分析应用程序。它扩展了广泛使用的MapReduce计算模型。高效的支撑更多计算模式,包括交互式查询和流处理。spark的一个主要特点是能够在内存中进行计算,及时依赖磁盘进行复杂的运算,Spark依然比MapReduce更加高效。RDD弹性分布式数据集(RDD)是其设计的核心为内存计算、适合计算机集群、高效率容错的可以在 Spark 上进行并行操作的关于分区数据元素的集合且是只读的在 Spark。
兼容性:
Spark可以非常方便地与其他的开源产品进行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassandra等。这对于已经部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark的强大处理能力。Spark也可以不依赖于第三方的资源管理和调度器,它实现了Standalone作为其内置的资源管理和调度框架,这样进一步降低了Spark的使用门槛,使得所有人都可以非常容易地部署和使用Spark。此外,Spark还提供了在EC2上部署Standalone的Spark集群的工具。
spark的组成:
Spark组成(BDAS):全称伯克利数据分析栈,通过大规模集成算法、机器、人之间展现大数据应用的一个平台。也是处理大数据、云计算、通信的技术解决方案。
它的主要组件有:
SparkCore:将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、RPC、序列化和压缩,并为运行在其上的上层组件提供API。
SparkSQL:Spark Sql 是Spark来操作结构化数据的程序包,可以让我使用SQL语句的方式来查询数据,Spark支持 多种数据源,包含Hive表,parquest以及JSON等内容。
SparkStreaming: 是Spark提供的实时数据进行流式计算的组件。
MLlib:提供常用机器学习算法的实现库。
GraphX:提供一个分布式图计算框架,能高效进行图计算。
BlinkDB:用于在海量数据上进行交互式SQL的近似查询引擎。
Tachyon:以内存为中心高容错的的分布式文件系统。
为了支持Python语言使用Spark,Apache Spark社区开发了一个工具PySpark。利用PySpark中的Py4j库,我们可以通过Python语言操作RDDs。
PySpark提供了PySpark Shell,它是一个结合了Python API和spark core的工具,同时能够初始化Spark环境。
应用场景:
1.Yahoo将Spark用在Audience Expansion中的应用,进行点击预测和即席查询等
2.淘宝技术团队使用了Spark来解决多次迭代的机器学习算法、高计算复杂度的算法等。应用于内容推荐、社区发现等
3.腾讯大数据精准推荐借助Spark快速迭代的优势,实现了在“数据实时采集、算法实时训练、系统实时预测”的全流程实时并行高维算法,最终成功应用于广点通pCTR投放系统上。
4.优酷土豆将Spark应用于视频推荐(图计算)、广告业务,主要实现机器学习、图计算等迭代计算。
本实验具体运行的Ubuntu16.04环境如下:
Hadoop2.7.1、Spark2.1.0、HBase1.1.5、JDK1.8、Scala2.11.8、MySQL

3、数据来源描述

3.1大数据分析的数据来源有很多种,包括公司或者机构的内部来源和外部来源。分为以下几类:
1)交易数据。包括POS机数据、信用卡刷卡数据、电子商务数据、互联网点击数据、订单数据、供应链数据等。
2)移动通信数据。移动通信设备记录的数据量和数据的立体完整度,常常优于各家互联网公司掌握的数据。移动设备上的软件能够追踪和沟通无数事件,从运用软件储存的交易数据(如搜索产品的记录事件)到个人信息资料或状态报告事件(如地点变更即报告一个新的地理编码)等。
3)人为数据。人为数据包括电子邮件、文档、图片、音频、视频,以及通过微信、博客、推特、维基、脸书、Linkedin等社交媒体产生的数据流。这些数据大多数为非结构性数据,需要用文本分析功能进行分析。
4)机器和传感器数据。来自感应器、量表和其他设施的数据、定位/GPS系统数据等。这包括功能设备会创建或生成的数据,例如智能温度控制器、智能电表、工厂机器和连接互联网的家用电器的数据。来自物联网的数据可以用于构建分析模型,连续监测预测性行为(如当传感器值表示有问题时进行识别),提供规定的指令(如警示技术人员在真正出问题之前检查设备)等。
5)互联网上的“开放数据”来源,如政府机构,非营利组织和企业免费提供的数据。
3.2本实验数据:
1、某大学计算机系的成绩数据集data.txt
2、某大学计算机系课程的学号成绩(A.txt、B.txt)
3、某大学计算机系课程的成绩包含姓名与成绩(Algorithm.txt、Database.txt、Python.txt)

4、数据上传及上传结果查看

利用qq邮箱或将数据发送到ubuntu并解压,查看文件:
在这里插入图片描述
图4-1 查看文件夹内文件

1、pyspark交互式编程

在这里插入图片描述

图4-1-1 data.txt

2.编写独立应用程序实现数据去重

在这里插入图片描述
在这里插入图片描述

图4-2 A.txt/B.txt

3.编写独立应用程序实现求平均值问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图4-3 Algorithm.txt、Database.txt、Python.txt

5、数据处理过程描述

5.1 pyspark交互式编程

启动pyspark
在这里插入图片描述

图5-1-1
(1)该系总共有多少学生;
在这里插入图片描述

图5-1-2
(2)该系共开设了多少门课程;
在这里插入图片描述

图5-1-3
(3)Tom同学的总成绩平均分是多少;
在这里插入图片描述

图5-1-4
在这里插入图片描述

图5-1-5
(4)求每名同学的选修的课程门数;
在这里插入图片描述

图5-1-6
(5)该系DataBase课程共有多少人选修;
在这里插入图片描述

图5-1-7
(6)各门课程的平均分是多少;
在这里插入图片描述

图5-1-8
(7)使用累加器计算共有多少人选了DataBase这门课。
在这里插入图片描述

图5-1-9

5.2编写独立应用程序实现数据去重

编写代码:
在这里插入图片描述

图5-2-1
运行文件并查看结果:
在这里插入图片描述

图5-2-2
在这里插入图片描述

图5-2-3

5.3 编写独立应用程序实现求平均值问题

编写代码:
在这里插入图片描述

图5-3-1
运行文件并查看结果
在这里插入图片描述

图5-3-2
在这里插入图片描述

图5-3-3 C文件

6、经验总结

通过这次大作业使我更加熟悉了RDD的基本操作,学会了如何加载数据创建RDD以及其转换操作;也懂得了报错之后应该如何查看错误出现在哪,数组下标越界后改怎么处理;对spark的RDD操作有了进一步的认识。熟悉Spark的RDD基本操作及键值对操作、使用RDD编程解决实际具体问题的方法。也使我更加了解了大数据spark这门课,对linux的命令记得更牢了。过程中也发现了很多自己的不足之处,接下去会继续学习这方面的知识。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值