1.今天把Spark编程第三个实验的Scala独立程序编程写完了。使用 sbt 打包 Scala 程序,然后提交到Spark运行。

2.完成了实验四的第一项

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

map(t => t.split(",")(0))表示:lines这个RDD中每个元素被split()函数拆分成3个字符串,保存到数组中,然后,把数组中的第1个元素(即学生名字字段的值)取出来放到新的RDD中。

distinct()表示:去重操作,即把重复的学生名字去掉,只保留一个。

count()表示:求去重后的学生总人数。

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

与第一问同理,只不过改为数组的第二个元素。

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

lines.filter(t => t.split(",")(0) == "Tom")表示:过滤掉数据集中第1个字段非“Tom”的名字,即只保留Tom的数据。

map(t => (t.split(",")(0), t.split(",")(2).toInt)) 表示:lines这个RDD中每个元素被split()函数拆分成3个字符串,保存到数组中,然后,把数组中的第1个元素和第3个元素取出来放到新的RDD中,.toInt的作用是把String类型的成绩值转变成Int类型,可以进行运算。

mapValues(x => (x,1))表示:构建(key, value)类型的键值对,其中,key表示Int类型的成绩,value表示数字"1"。

reduceByKey((x,y) => (x._1+y._1, x._2+y._2))表示:x._1+y._1表示把key(成绩)相加,x._2+y._2表示把value(数字“1”)相加。

mapValues(x => x._1/x._2)表示:总成绩/科目总数

values表示:返回value值(即平均成绩)。

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

数据大概如下,仅展示部分结果如图:

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

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

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

假期学习【四】RDD编程实验一的更多相关文章

  1. Spark学习之RDD编程(2)

    Spark学习之RDD编程(2) 1. Spark中的RDD是一个不可变的分布式对象集合. 2. 在Spark中数据的操作不外乎创建RDD.转化已有的RDD以及调用RDD操作进行求值. 3. 创建RD ...

  2. spark实验(四)--RDD编程(1)

    一.实验目的 (1)熟悉 Spark 的 RDD 基本操作及键值对操作: (2)熟悉使用 RDD 编程解决实际具体问题的方法. 二.实验平台 操作系统:centos6.4 Spark 版本:1.5.0 ...

  3. 假期学习【五】RDD编程实验四

    今天完成了实验四的第二问和第三问 第二题 对于两个输入文件 A 和 B,编写 Spark 独立应用程序,对两个文件进行合并,并剔除其 中重复的内容,得到一个新文件 C.下面是输入文件和输出文件的一个样 ...

  4. Spark学习之RDD编程总结

    Spark 对数据的核心抽象——弹性分布式数据集(Resilient Distributed Dataset,简称 RDD).RDD 其实就是分布式的元素集合.在 Spark 中,对数据的所有操作不外 ...

  5. Spark学习笔记——RDD编程

    1.RDD——弹性分布式数据集(Resilient Distributed Dataset) RDD是一个分布式的元素集合,在Spark中,对数据的操作就是创建RDD.转换已有的RDD和调用RDD操作 ...

  6. Spark学习(2) RDD编程

    什么是RDD RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.弹性.里面的元素可并行计算的集合 RDD允 ...

  7. Beaglebone Back学习四(GPIO实验)

    GPIO Beaglebone Back开发板引出了92个引脚,其中只有65个GPIO口可通过配置使用,由于引脚具有“复用”的特性,大约每个引脚有8种工作模式(Beagle System Refere ...

  8. Spark菜鸟学习营Day3 RDD编程进阶

    Spark菜鸟学习营Day3 RDD编程进阶 RDD代码简化 对于昨天练习的代码,我们可以从几个方面来简化: 使用fluent风格写法,可以减少对于中间变量的定义. 使用lambda表示式来替换对象写 ...

  9. Spark菜鸟学习营Day1 从Java到RDD编程

    Spark菜鸟学习营Day1 从Java到RDD编程 菜鸟训练营主要的目标是帮助大家从零开始,初步掌握Spark程序的开发. Spark的编程模型是一步一步发展过来的,今天主要带大家走一下这段路,让我 ...

随机推荐

  1. Arm开发板+Qt学习之路-multiple definition of

    问题描述:在一个头文件a.h中定义一些变量x,在其他.c文件中(b.c,c.c)要用到.用一般的全局变量的方法,编译时总是提示error:multiple definition of x 问题分析:o ...

  2. Linux上安装软件

    Linux发行版的两大系列 debian:代表的比如Ubuntu,软件包管理工具apt.apt-get.dpkg,软件包名.deb redhat:代表的比如CentOS(所以在VMware上安装Cen ...

  3. Django之F与Q查询

    F查询 from django.db.models import F,Q # 1.查询库存数大于卖出数的书籍 res = models.Book.objects.filter(kucun__gt=F( ...

  4. Winfom 使用 BackgroundWorker 实现进度条

    BackgroundWorker 简介(来自百度) BackgroundWorker是·net里用来执行多线程任务的控件,它允许编程者在一个单独的线程上执行一些操作.耗时的操作(如下载和数据库事务)在 ...

  5. 获取Servlet原生API

    1.请求 <a href="param/test1">Servlet原生API</a> 2.处理方法 @RequestMapping("/para ...

  6. junit 运行(eclipse + IDEA)

    记得刚用IDEA  开发的时候, 什么都还不熟,以为junit 运行还跟eclipse 一样, 结果试了后才知道是不一样的. 现在刚好写junit 相关的,也就都记录下来吧 Eclipse:eclip ...

  7. POJ 3253 Fence Repair 贪心 优先级队列

    Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 77001   Accepted: 25185 De ...

  8. C# Excel导出超出65536行报错 Invalid row number (65536) outside allowable range (0..65535)

    C# Excel导出超出65536行报错 Invalid row number (65536) outside allowable range (0..65535) 一:报错 Invalid row ...

  9. MySQL概述及入门(一)

    MySql概述及入门(一) 什么是MySQL?    MySQL是当今主流的关系型数据库管理系统(记录是有行有列的数据库) , 可以与Oracle 和SQL Server 竞争 , 是最好RDBMS( ...

  10. 数据库 left()、length()函数

    数据库 left().length()函数 1.Mysql的length()函数: length()函数主要用于计算字符串的长度,用法也很简单:length(要计算的字符串) 就可以计算出字符串的长度 ...