学习进度笔记13

今天完成了老师布置的spark实验4的第一部分,使用的是之前未接触过的编程方式,格式也有很大不同。

实验 4 RDD 编程初级实践

一、实验目的

(1)熟悉 Spark RDD 基本操作及键值对操作;

(2)熟悉使用 RDD 编程解决实际具体问题的方法。

二、实验平台

操作系统:Ubuntu16.04

Spark 版本:2.1.0

三、实验内容和要求

1spark-shell 交互式编程

请到本教程官网的“下载专区”的“数据集”中下载 chapter5-data1.txt,该数据集包含

了某大学计算机系的成绩,数据格式如下所示:

Tom,DataBase,80

Tom,Algorithm,50

Tom,DataStructure,60

Jim,DataBase,90

Jim,Algorithm,60

Jim,DataStructure,80

……

请根据给定的实验数据,在 spark-shell 中通过编程来计算以下内容:

先新建文件夹sparkdata,将数据文件上传到目录/root/spark/sparkdata/Data01.txt

(1)该系总共有多少学生;

首先获取该数据文件,用.split对数据文件进行分割并取每行的第一段数据,使用distinct去重,计算总数并输出。 

(2)该系共开设来多少门课程;

该操作与上个操作基本一致,唯一的不同就是对数据进行分割时取每行的第二段数据。

(3)Tom 同学的总成绩平均分是多少;

先找到Tom的所有数据,截取出来并输出

 

然后截取数据取每行数据的第一段和最后一段并将最后一段定义为int类型,mapValues是对值的操作,不操作key使数据变成(Tom,(26,1))

接着需要按key进行reducekey合并当将Tom进行reduce后这里的(x,y) 表示的是(26,1)(12,1)然后对value进行操作,最后输出。

(4)求每名同学的选修的课程门数;

首先截取数据并取第一段和第二段数据,然后改变数据的值为(课程,1

然后将按照key进行合并,将统一key的值相加,并取其值。

输出所有人的修课门数

(5)该系 DataBase 课程共有多少人选修;

使用filter记性数据的过滤,让课程等于database并计算数据的行数即可。

(6)各门课程的平均分是多少;

(7)使用累加器计算共有多少人选了 DataBase 这门课。

原文地址:https://www.cnblogs.com/lijiawei1-2-3/p/14288732.html