Spark RDD编程-大数据课设

本文介绍了使用pyspark进行RDD编程的实验,包括实验目的、平台配置、实验内容。主要任务有:交互式编程中计算学生、课程数量,求Tom同学平均分,学生选修课程门数,DataBase课程选修人数,各课程平均分以及数据去重。通过实例展示了如何使用Spark处理数据并解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验目的

1、熟悉Spark的RDD基本操作及键值对操作;
2、熟悉使用RDD编程解决实际具体问题的方法。

二、实验平台

操作系统:Ubuntu16.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
……

根据给定的实验数据,在pyspark中通过编程来计算以下内容:
(1)该系总共有多少学生;
(2)该系共开设了多少门课程;
(3)Tom同学的总成绩平均分是多少;
(4)求每名同学的选修的课程门数;
(5)该系DataBase课程共有多少人选修;
(6)各门课程的平均分是多少;
(7)使用累加器计算共有多少人选了DataBase这门课。

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)

四、实验过程

实验数据准备:
1、将数据文件复制到/usr/local/spark/sparksqldata/目录下

hadoop@dblab-VirtualBox:~$ cd /usr/local/spark/sparksqldata
hadoop@dblab-VirtualBox:/usr/local/spark/sparksqldata$ ls
chapter4-data.txt
hadoop@dblab-VirtualBox:/usr/local/spark/sparksqldata$ cp -r /home/hadoop/桌面/ 大数据/ * /usr/local/spark/sparksqldata
hadoop@dblab-VirtualBox:/usr/local/spark/sparksqldata$ ls
Algorithm.txt B.txt Database.txt Python.txt A.txt
chapter4-data.txt data.txt

将数据文件放到实验目录下

(一)pyspark交互式编程

1、输入pyspark开启spark

hadoop@dblab-VirtualBox:/usr/local/spark/sparksqldata$ pyspark

开启spark
2、加载data.txt文件

lines = sc.textFile(“file:///usr/local/spark/sparksqldata/data.txt”)

加载数据
3、查看数据共有多少行

<
### Spark RDD 编程教程 RDD(Resilient Distributed Dataset)是 Spark 的核心抽象之一,表示一个不可变的、分区的数据集[^4]。它可以被并行操作,并支持多种转换和动作操作。 #### 创建 RDD 可以通过两种方式创建 RDD: 1. **从外部存储加载数据**:例如 HDFS 文件或其他分布式文件系统中的文件。 2. **通过已有的 Scala 集合对象**:适用于小型测试数据集。 以下是基于 `spark-shell` 的交互式编程示例: ```scala // 加载本地文件作为 RDD val textFile = sc.textFile("file:///path/to/your/file.txt") // 使用集合创建 RDD val data = Array(1, 2, 3, 4, 5) val distData = sc.parallelize(data) // 显示前几个元素 textFile.take(5).foreach(println) distData.collect().foreach(println) ``` 上述代码展示了如何从文件或内存数组中创建 RDD 并查看其内容--- ### Spark Shell 交互式编程 示例 `spark-shell` 是一种快速启动 Spark 上下文的方式,适合开发人员进行调试和原型计[^2]。以下是一个简单的交互式编程流程: #### 启动 Spark Shell 运行命令如下: ```bash bin/spark-shell ``` 这将在本地模式下启动 Spark,默认绑定地址为 `http://localhost:4040`,提供 Web UI 查看任务状态。 #### 数据处理实例 假有一个名为 `input.txt` 的文本文件,其中每行包含若干单词。我们希望统计每个单词出现的次数。 ```scala // 读取文件并分割成单词 val lines = sc.textFile("file:///path/to/input.txt") val words = lines.flatMap(line => line.split(" ")) // 将每个单词映射为 (word, 1),然后按 key 聚合计数 val wordCounts = words.map(word => (word, 1)).reduceByKey(_ + _) // 输出结果 wordCounts.foreach(println) ``` 此代码片段实现了经典的 WordCount 功能,利用了 RDD 的 `flatMap`、`map` 和 `reduceByKey` 方法[^5]。 --- ### 关键方法解析 - **Transformation**: 如 `map`, `filter`, `flatMap`, `groupByKey`, `reduceByKey` 等用于定义计算逻辑。 - **Action**: 如 `collect`, `count`, `take`, `saveAsTextFile` 等触发实际计算。 这些方法共同构成了 Spark 中的核心编程模型。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值