1. 需求描述

本次实验需要对给定数据进行RDD的基本操作,使用RDD编程实现解决具体问题的方法。内容要求分为三个部分:

  1. 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独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。

  1. 环境介绍

该实验考察学生对使用PySpark进行编程的熟悉程度。Spark是专为大规模数据处理设计的快速通用计算引擎,是与Hadoop相似的开源集群计算环境,但在某些工作负载方面表现得比Hadoop更优秀。

本实验使用Oracle VM VirtualBox上的Linux操作系统Ubuntu Kylin,版本为16.04,虚拟机上需要架构好Spark(2.4.0)环境。本实验使用Python(3.4.3)进行数据操作。

  1. 数据来源描述

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

  1. 数据上传及上传结果查看
  1. pyspark交互式编程

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

3.编写独立应用程序实现求平均值问题

5、数据处理过程描述

  1. pyspark交互式编程
  1. 该系总共有多少学生;

    1. 创建RDD
    2. 拆分每行记录,取出每行第一个元素
    3. 去除文件中的重复记录
    4. 统计所有未重复记录

  1. 该系共开设了多少门课程;

  1. Tom同学的总成绩平均分是多少;

    1. 提取Tom的每门成绩,并转换为int类型
    2. 统计Tom有多少门课程
    3. 统计Tom的总成绩

  1. 求每名同学的选修的课程门数;

    1. 生成RDD
    2. 求出学生每门课程对应(学生姓名,1),学生有n门课,则有n个学生
    3. 按学生姓名为key,获取每个学生的课程总数
    4. 按照学生姓名分组统计他们选修课程数

  1. 该系DataBase课程共有多少人选修;

    1. 生成RDD
    2. 为每门课程的分数后面新增一列1,表示一个学生选择了该门课程

  1. 各门课程的平均分是多少;

  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编程初级实践-课程论文相关推荐

  1. Spark综合大作业:RDD编程初级实践

    Spark综合大作业:RDD编程初级实践 实验配置:操作系统:Ubuntu16.04 | 环境:Spark版本:2.4.0 | 软件:Python版本:3.4.3. 文章目录 一.实验目的 二.实验平 ...

  2. spark期末大作业RDD编程初级实践

    1.需求描述 本次实验需要:系统:linux unbuntu14.04,处理器:至少需要两个处器,一个内核,内存:至少4G,硬盘空间:大小需要20GB.Hadoop:2.7.1以上版本,JDK:1.8 ...

  3. RDD编程初级实践(期末大作业)

    文章目录 1.pyspark交互式编程 (1)该系总共有多少学生: (2)该系共开设了多少门课程: (3)Tom同学的总成绩平均分是多少: (4)求每名同学的选修的课程门数: (5)该系DataBas ...

  4. 实验5 Spark SQL编程初级实践

    今天做实验[Spark SQL 编程初级实践],虽然网上有答案,但在自己的环境下并不能够顺利进行 在第二题中,要求编程实现将 RDD 转换为 DataFrame.根据所谓标准答案,在进行sbt 打包时 ...

  5. Scala编程初级实践-统计学生成绩

    Scala编程初级实践 统计学生成绩 学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为学号.性别.课程名1.课程名2等,后面每一行代表一个学生的信息,各字段之间用空白符隔开 Id gende ...

  6. Spark大数据分析与实战:Spark Streaming编程初级实践

    Spark Streaming编程初级实践 一.安装Hadoop和Spark 具体的安装过程在我以前的博客里面有,大家可以通过以下链接进入操作: Hadoop的安装:https://blog.csdn ...

  7. MapReduce编程初级实践

    MapReduce编程初级实践 1.通过实验掌握基本的MapReduce编程方法: 2.掌握用MapReduce解决一些常见的数据处理问题,包括数据去重.数据排序和数据挖掘等. 1.编程实现文件合并和 ...

  8. mapreduce编程初级实践_涨姿势!2020最好的 10 大国外编程学习网站

    码个蛋(codeegg) 第 1043 次推文 作者:John Selawsky 链接:https://sourl.cn/cWw63v 前言 在这篇文章中,我收集了 10 个最佳的编程学习网站,掌握编 ...

  9. 实验4 MapReduce编程初级实践【java编程实现】

    1.编程实现文件合并和去重操作 对于两个输入文件,即文件A和文件B,请编写MapReduce程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新的输出文件C.下面是输入文件和输出文件的一个样例供 ...

最新文章

  1. 用aspnetpager实现datalist分页(绝对的简单实用)
  2. ffmpeg rtp时间戳
  3. Java项目如何改成maven_普通java项目改进为maven:ecplise
  4. pyminifier混淆代码的使用案例
  5. c语言如何发现错误在哪里,二个C语言例子,编译没通过.不知道错在哪里[求助]
  6. JAVA——Unicode编码格式工具类
  7. 利用Linux命令行进行文本按行去重并按重复次数排序yes
  8. Gradle增量编译(六)
  9. 开源 java CMS - FreeCMS2.6 Web页面信息采集
  10. 暑期训练日志----2018.8.19
  11. 销售联系客户 需要技巧
  12. 大公司病?记改一个文字颜色的过程
  13. Leetcode 208:实现Trie(前缀树)
  14. Perl面向对象编程
  15. 关于xcode中的代码比较工具
  16. 155款安卓开源项目源码整理,总有你要找的(精心收集)
  17. 数据结构/排序/归并排序/二路归并排序
  18. 工业相机选型、高速摄像机选型、相机参数接口总结
  19. 记一次oracle通过dblink连接mysql实施
  20. python视频搬运_拒绝降权!教你用 Python 确保制作的短视频独一无二

热门文章

  1. 分享6个国内优秀Java后台管理框架的开源项目
  2. 101到200之间素数
  3. 圆形路标_自定义工具:路标不足时
  4. 大数据建模与数据模型工具
  5. 直播预告 | 香侬科技孟昱先:用MRC框架解决各类NLP任务
  6. 2021年黄石三中高考成绩查询,2021年黄石中考各学校录取分数线,历年黄石中考分数线汇总...
  7. 全面理解隐马尔可夫模型
  8. 三星手机电池循环清零代码_2018年自然语言处理最值得关注的研究、论文和代码...
  9. odb 使用指南(四)数据库查询
  10. 小睿睿的等式 (思维dp)