RDD编程初级实践

本文档介绍了如何使用pyspark进行交互式编程,包括计算学生总数、课程数量、平均分等,同时提供了独立应用程序实现数据去重和平均成绩计算,涉及文件合并、去重、平均值计算等操作。

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

  1. 需求描述

本次实验需要完成:1.pyspark交互式编程;2.编写独立应用程序实现数据去重;3.编写独立应用程序实现求平均值问题。

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

编写独立应用程序实现数据去重需要对于两个输入文件A.txt和B.txt,编写Spark独立应用程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新文件C。

编写独立应用程序实现求平均值问题需要对给出门课的成绩(Algorithm.txt、Database.txt、Python.txt),每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写Spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。

 

  1. 环境介绍

本次实验在笔记本上进行,笔记本配置为:

型号:联想ThinkBook 15 2021款 酷睿版

CPU:11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz

内存:16GB

显卡:Intel(R) Iris(R) Xe Graphics

硬盘:西数SN530 512GB M.2 NVMe 固态硬盘

Windows版本:Windows 10 家庭中文版 20H2

虚拟机环境:Oracle VM VirtualBox

操作系统:Ubuntu16.04

Spark版本:2.4.0

Python版本:3.4.3

Hadoop版本:2.7.1

HBase版本:1.1.5

 

  1. 数据来源描述

1.pyspark交互式编程

### Spark RDD 初级编程实践教程 #### 什么是RDD? Resilient Distributed Dataset (RDD) 是 Apache Spark 中的核心抽象概念之一。它是一个不可变的分布式对象集合,支持并行操作[^1]。 #### RDD 的基本特性 - **不可变性**:一旦创建,就不能修改其内容。 - **分区存储**:数据被划分为多个分区,分布在集群的不同节点上。 - **懒加载机制**:所有的转换操作都是惰性的,只有当执行到行动操作时才真正触发计算[^1]。 #### 创建 RDD 的方式 可以通过两种主要的方式创建 RDD: 1. 平行化已有的集合; 2. 加载外部的数据集文件。 以下是通过 Scala 和 Python 实现的一些简单示例: --- #### 示例代码一:Scala 版本 下面展示如何使用 `sbt` 构建工具来设置项目环境以及实现简单的 RDD 转换逻辑。 ##### sbt 配置文件 (`build.sbt`) ```scala name := "RemDup" version := "1.0" scalaVersion := "2.11.8" libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"[^2] ``` ##### 主程序代码 (`Main.scala`) ```scala import org.apache.spark.{SparkConf, SparkContext} object RemDup { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("RemoveDuplicates").setMaster("local[*]") val sc = new SparkContext(conf) // 创建一个初始 RDD val data = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val rdd = sc.parallelize(data) // 使用 map 进行简单的转换 val mappedRdd = rdd.map(x => x * 2)[^1] // 执行 action 操作以获取结果 val result = mappedRdd.collect() println(result.mkString(", ")) sc.stop() } } ``` 此代码片段展示了如何初始化 Spark 上下文、创建 RDD、应用映射函数,并最终收集结果。 --- #### 示例代码二:Python 版本 对于更广泛的开发者群体来说,PySpark 提供了一种更加直观的方式来处理大数据任务。 ##### 初始化 PySpark 环境 确保安装好 PySpark 后可以运行如下脚本。 ##### 主程序代码 (`main.py`) ```python from pyspark import SparkConf, SparkContext if __name__ == "__main__": # 设置 Spark 配置 conf = SparkConf().setAppName("WordCountExample").setMaster("local[*]") sc = SparkContext(conf=conf) # 定义输入数据列表 data = ["apple", "banana", "orange", "grape", "apple"] # 将本地数据转化为 RDD rdd = sc.parallelize(data) # 应用去重操作 unique_rdd = rdd.distinct()[^1] # 收集结果并打印 results = unique_rdd.collect() print(results) sc.stop() ``` 这段代码演示了如何利用 `parallelize()` 方法将本地数组转为 RDD,并调用 `distinct()` 去除重复项。 --- #### 总结 以上两个例子分别基于 Scala 和 Python 展示了 Spark RDD 的基本用法,包括但不限于创建 RDD、定义转换操作(如 `map`, `filter`, 或者 `distinct`),以及最后通过行动算子提取实际的结果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值