RDD编程初级实践

Spark RDD编程实践:数据去重与平均值计算
本文介绍了使用pyspark进行RDD编程的实践经验,包括通过交互式编程计算学生人数、课程数量、平均分等,以及编写独立程序实现数据去重和平均值计算。在数据去重任务中,合并A、B文件并去除重复项,平均值问题中计算了不同课程的平均成绩。实验加深了对Spark RDD操作的理解。

1、需求描述

在当今信息化时代中,随着大数据的快速发展情况下,大数据应用于社会的各方面的发展及进步,大数据融入到生活中的方方面面之中。对于我们学习计算机的学生来说,学习大数据是相当重要的。通过实验使我们熟悉Spark的RDD基本操作和键值对操作;以及熟悉使用RDD编程解决实际具体问题的方法,实验的具体内容如下:
1.1.pyspark交互式编程
通过给定的分析数据data.txt文档,该文档内容包含了某大学计算机系的成绩的数据集,在pyspark中通过编程来计算以下内容:
(1)该系总共有多少学生;
(2)该系共开设了多少门课程;
(3)Tom同学的总成绩平均分是多少;
(4)求每名同学的选修的课程门数;
(5)该系DataBase课程共有多少人选修;
(6)各门课程的平均分是多少;
(7)使用累加器计算共有多少人选了DataBase这门课。
1.2.编写独立应用程序实现数据去重
编写Spark独立应用程序,对输入的两个文件A和B进行合并,并剔除其中重复的内容,从而得到一个新文件C。输出文件C如下:
根据输入的文件A和B合并得到的输出文件C的样例如下:
20200101 x
20200101 y
20200102 y
20200103 x
20200104 y
20200104 z
20200105 y
20200105 z
20200106 z
1.3.编写独立应用程序实现求平均值问题
每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写Spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。输出文件格式如下:
平均成绩如下:
(小红,83.67)
(小新,88.33)
(小明,89.67)
(小丽,88.67)

2、环境介绍

Ubuntu16.04
Hadoop2.7.1
Spark2.1.0
HBase1.1.5
JDK1.8
MySQL

3、数据来源描述

1) Pyspark交互式编程

本次实验采用大数据教程给出的。其中提供分析数据data.txt,该数据集包含了某大学计算机系的成绩,数据格式如下所示:
Tom,DataBase,80
Tom,Algorithm,50
Tom,DataStructure,60
Jim,DataBase,90
Jim,Algorithm,60
Jim,DataStructure,80
……

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

<
在进行RDD编程实验之前,要掌握Spark的基本概念和RDD的特性,如惰性计算、分区、依赖关系等,同时需了解Python等语言的基础知识。下面是Python在Spark中进行RDD编程初级实践内容: ### pyspark交互式编程 在实验中,先创建SparkContext对象以连接Spark集群和创建RDD,接着通过textFile函数读取文件数据,利用filter等函数进行数据清洗和处理,将数据转换成键值对形式,再用map、reduceByKey等函数进行计算和处理,利用sortByKey等函数进行排序操作,最后通过foreach等函数将结果输出。过程中要选择合适的算子(如filter、map、reduceByKey、sortByKey等)和lambda表达式进行数据处理和计算,考虑分区和并行计算以提高大规模数据处理效率,注意数据类型和格式确保正确性和一致性,排序时利用自定义类实现二次排序等功能[^1]。 ### 编写独立应用程序实现数据去重 对于两个输入文件A和B,编写Spark独立应用程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新文件C。示例代码如下: ```python from pyspark import SparkConf, SparkContext conf = SparkConf().setMaster("local[1]").setAppName("filter") sc = SparkContext(conf = conf) file_A = "file:///home/hadoop/mycode/ex2/A.txt" file_B = "file:///home/hadoop/mycode/ex2/B.txt" C = "file:///home/hadoop/mycode/ex2/C" # 读取两个文件 rdd_A = sc.textFile(file_A) rdd_B = sc.textFile(file_B) # 将两个文件数据合并 rdd_union = rdd_A.union(rdd_B) # 使用map来将数据转为键值对,实际上我们只需要key rdd_C = rdd_union.map(lambda a:(a, 1)) # 按照key分组并排序 rdd_C = rdd_C.groupByKey() rdd_C = rdd_C.sortByKey() # 提取keys rdd_C = rdd_C.keys() # 保存到结果文件 rdd_C.coalesce(1).saveAsTextFile(C) ``` ### 编写独立应用程序实现求平均值问题 虽然引用中未给出此部分的详细代码,但思路可参考前面内容,先读取数据,再进行相应的数据处理和计算。例如,若要计算某列数据的平均值,可将数据映射为键值对,然后对值进行求和与计数,最后计算平均值。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值