作业:Tom,DataBase,80 Tom,Algorithm,50 Tom,DataStructure,60 Jim,DataBase,90 Jim,Algorithm,60 Jim,DataStructure,80 Bob,DataBase,95 Bob,Algorithm,65 Bob,DataStructure,85 Jane,DataBase,99 Jane,Algorithm,69 将以上数据存为.txt文件,在pyspark中通过编程来计算 根据给定文件中的标题、描述、标签以及部分内容,我们可以从中提炼出与Python、Spark以及大数据处理相关的多个知识点。下面将详细展开这些知识点。 ### 1. Python与Spark的基础结合 Python 和 Spark 的结合使得大数据处理变得更加高效且易于实现。Python 的易用性和灵活性加上 Spark 的强大分布式计算能力,为数据分析提供了理想的工具组合。 ### 2. 数据存储与读取 题目中提到的数据存储格式是文本文件。在实际应用中,通常会使用更高级的文件格式如 Parquet 或 Avro 来存储结构化数据,但在本例中,简单的 CSV 格式足以满足需求。通过 `pyspark` 可以方便地读取和解析这种格式的文件。 ```python from pyspark.sql import SparkSession # 创建 SparkSession spark = SparkSession.builder \ .appName("Python Spark SQL basic example") \ .getOrCreate() # 读取 CSV 文件 data = spark.read.format("csv").option("header", "false").load("path/to/file.csv") ``` ### 3. 数据处理 题目要求完成多项统计任务,包括学生总数、课程总数等。这需要对数据进行清洗和转换,以便进行后续的统计分析。 #### 计算学生总数 可以通过 `distinct()` 函数来去除重复的学生名称,从而得到学生总数。 ```python students_count = data.select("col0").distinct().count() ``` #### 计算课程总数 同样的逻辑也适用于计算不同的课程数量。 ```python courses_count = data.select("col1").distinct().count() ``` #### Tom同学的总成绩平均分 首先筛选出 Tom 的所有成绩,然后计算平均值。 ```python tom_avg_score = data.filter(data.col0 == "Tom").groupBy().avg("col2").collect()[0][0] ``` #### 每名同学的选修课程门数 可以使用 `groupBy()` 和 `count()` 函数来计算每名学生的选课数量。 ```python course_counts = data.groupBy("col0").agg({"col1": "count"}) ``` #### DataBase 课程的选修人数 通过 `filter()` 和 `count()` 函数可以很容易得到选修特定课程的学生数量。 ```python db_students = data.filter(data.col1 == "DataBase").select("col0").distinct().count() ``` #### 各门课程的平均分 可以使用 `groupBy()` 和 `avg()` 函数来计算不同课程的平均成绩。 ```python avg_scores = data.groupBy("col1").agg({"col2": "avg"}) ``` #### 使用累加器计算选修 DataBase 的人数 累加器是一种只读变量,可以在集群中高效地进行累加操作。 ```python from pyspark.sql.functions import when accumulator = sc.accumulator(0) data.rdd.foreach(lambda row: accumulator.add(1) if row[1] == "DataBase" else None) ``` #### 分数大于 80 分的记录数 同样使用 `filter()` 函数来筛选出符合条件的记录。 ```python high_scores = data.filter(data.col2 > 80).count() ``` #### 全班总分 可以使用 `sum()` 函数来计算所有成绩的总和。 ```python total_score = data.agg({"col2": "sum"}).collect()[0][0] ``` #### 每个同学的总分 通过 `groupBy()` 和 `sum()` 函数可以计算每位同学的成绩总和。 ```python student_totals = data.groupBy("col0").agg({"col2": "sum"}) ``` #### 使用 reduce() 计算 10! 阶乘 `reduce()` 函数通常用于聚合操作,在这里可以用来计算阶乘。 ```python factorial = data.rdd.reduce(lambda x, y: x * y if y <= 10 else x, range(1, 11)) ``` 以上代码示例展示了如何利用 Python 和 Spark 来解决题目中提出的问题。通过这些步骤,我们可以有效地完成数据的加载、清洗、转换和统计分析。这些技术不仅适用于教育场景下的成绩管理,也同样适用于更广泛的大数据分析领域。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- apache-maven-3.6.1-bin.zip
- c593f5fc-d4a7-4b43-8ab2-51afc90f3f62
- IIR滤波器参数计算函数
- WPF树菜单拖拽功能,下级目录拖到上级目录,上级目录拖到下级目录.zip
- CDH6.3.2版本hive2.1.1修复HIVE-14706后的jar包
- 鸿蒙项目实战-天气项目(当前城市天气、温度、湿度,24h天气,未来七天天气预报,生活指数,城市选择等)
- Linux环境下oracle数据库服务器配置中文最新版本
- Linux操作系统中Oracle11g数据库安装步骤详细图解中文最新版本
- SMA中心接触件插合力量(插入力及分离力)仿真
- 变色龙记事本,有NPP功能,JSONview功能