- 需求描述
本次实验需要对给定数据进行RDD的基本操作,使用RDD编程实现解决具体问题的方法。内容要求分为三个部分:
- pyspark交互式编程
根据给定大学成绩数据集,用pyspark来进行编程,分析并计算以下内容:
(1)该系总共有多少学生;
(2)该系共开设了多少门课程;
(3)Tom同学的总成绩平均分是多少;
(4)求每名同学的选修的课程门数;
(5)该系DataBase课程共有多少人选修;
(6)各门课程的平均分是多少;
(7)使用累加器计算共有多少人选了DataBase这门课。
2.编写独立应用程序实现数据去重
对于两个输入文件A和B,编写Spark独立应用程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新文件C。文件C的样例如下:
20200101 x
20200101 y
20200102 y
20200103 x
20200104 y
20200104 z
20200105 y
20200105 z
20200106 z
3.编写独立应用程序实现求平均值问题
编写Spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。
- 环境介绍
该实验考察学生对使用PySpark进行编程的熟悉程度。Spark是专为大规模数据处理设计的快速通用计算引擎,是与Hadoop相似的开源集群计算环境,但在某些工作负载方面表现得比Hadoop更优秀。
本实验使用Oracle VM VirtualBox上的Linux操作系统Ubuntu Kylin,版本为16.04,虚拟机上需要架构好Spark(2.4.0)环境。本实验使用Python(3.4.3)进行数据操作。
- 数据来源描述
1.pyspark交互式编程
该数据是某所大学计算机系的学生成绩,数据文件为data.txt,格式如下所示:
Tom,DataBase,80 Tom,Algorithm,50 Tom,DataStructure,60 Jim,DataBase,90 Jim,Algorithm,60 Jim,DataStructure,80 …… |
2.编写独立应用程序实现数据去重
本实验给出门课的成绩(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
3.编写独立应用程序实现求平均值问题
本实验给出门课的成绩(Algorithm.txt、Database.txt、Python.txt)。每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩。样例如下:
Algorithm成绩:
小明 92
小红 87
小新 82
小丽 90
Database成绩:
小明 95
小红 81
小新 89
小丽 85
Python成绩:
小明 82
小红 83
小新 94
小丽 91
- 数据上传及上传结果查看
- pyspark交互式编程
2.编写独立应用程序实现数据去重
3.编写独立应用程序实现求平均值问题
5、数据处理过程描述
- pyspark交互式编程
- 该系总共有多少学生;
- 创建RDD
- 拆分每行记录,取出每行第一个元素
- 去除文件中的重复记录
- 统计所有未重复记录
- 该系共开设了多少门课程;
- Tom同学的总成绩平均分是多少;
- 提取Tom的每门成绩,并转换为int类型
- 统计Tom有多少门课程
- 统计Tom的总成绩
- 求每名同学的选修的课程门数;
- 生成RDD
- 求出学生每门课程对应(学生姓名,1),学生有n门课,则有n个学生
- 按学生姓名为key,获取每个学生的课程总数
- 按照学生姓名分组统计他们选修课程数
- 该系DataBase课程共有多少人选修;
- 生成RDD
- 为每门课程的分数后面新增一列1,表示一个学生选择了该门课程
- 各门课程的平均分是多少;
- 使用累加器计算共有多少人选了DataBase这门课。
2.编写独立应用程序实现数据去重
(1)分别创建A与B的RDD
(2)生成包含A和B两个RDD所有元素的新RDD
(3)对数据进行去重(利用distinct函数,图中临时注释掉了)
(4)对值进行排序
(5)将结果用repartition合并,写入result文件夹
结果为:
3.编写独立应用程序实现求平均值问题
(1)初始化SparkContext,分别生成三个文件的RDD
(2)合并三个文件为一
(3)为每列数据增加一列1以统计学生选修科目数量
(4)计算每个学生的总成绩和选修数目
(5)用总成绩除以选修课程数,以计算学生每门课程的平均分(保留两位小数)
(6)将结果写入文件
平均分结果为:
6、经验总结
本节课程让我接触到了目前大数据的前沿技术之一——Spark计算引擎,该引擎有Hadoop的优点,但在数据存储方面比Hadoop更优秀,内存计算速度比Hadoop快上100倍。
通过将近20周的学习,我学会了Spark环境的搭建,复习了Python与SQL的语法并使用它们在Spark上进行了数据的操作处理。其中最重要的一个概念是RDD,它是Spark提供的一种抽象数据集,分布在集群的节点上,用函数操作集合的方式来进行并行操作。
本次实验主要考察的就是我们对RDD的了解和熟悉程度,通过实际操作,我学习到RDD是只读数据,不能修改,只能通过转换生成新的RDD。对文件进行数据操作需要构建RDD,再通过各种函数进行数据集操作,例如去重、合并、分词等等。
更多推荐
RDD编程初级实践-课程论文
发布评论