假期学习【四】RDD编程实验一
1.今天把Spark编程第三个实验的Scala独立程序编程写完了。使用 sbt 打包 Scala 程序,然后提交到Spark运行。
2.完成了实验四的第一项

map(t => t.split(",")(0))表示:lines这个RDD中每个元素被split()函数拆分成3个字符串,保存到数组中,然后,把数组中的第1个元素(即学生名字字段的值)取出来放到新的RDD中。
distinct()表示:去重操作,即把重复的学生名字去掉,只保留一个。
count()表示:求去重后的学生总人数。

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

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值(即平均成绩)。

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



假期学习【四】RDD编程实验一的更多相关文章
- Spark学习之RDD编程(2)
Spark学习之RDD编程(2) 1. Spark中的RDD是一个不可变的分布式对象集合. 2. 在Spark中数据的操作不外乎创建RDD.转化已有的RDD以及调用RDD操作进行求值. 3. 创建RD ...
- spark实验(四)--RDD编程(1)
一.实验目的 (1)熟悉 Spark 的 RDD 基本操作及键值对操作: (2)熟悉使用 RDD 编程解决实际具体问题的方法. 二.实验平台 操作系统:centos6.4 Spark 版本:1.5.0 ...
- 假期学习【五】RDD编程实验四
今天完成了实验四的第二问和第三问 第二题 对于两个输入文件 A 和 B,编写 Spark 独立应用程序,对两个文件进行合并,并剔除其 中重复的内容,得到一个新文件 C.下面是输入文件和输出文件的一个样 ...
- Spark学习之RDD编程总结
Spark 对数据的核心抽象——弹性分布式数据集(Resilient Distributed Dataset,简称 RDD).RDD 其实就是分布式的元素集合.在 Spark 中,对数据的所有操作不外 ...
- Spark学习笔记——RDD编程
1.RDD——弹性分布式数据集(Resilient Distributed Dataset) RDD是一个分布式的元素集合,在Spark中,对数据的操作就是创建RDD.转换已有的RDD和调用RDD操作 ...
- Spark学习(2) RDD编程
什么是RDD RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.弹性.里面的元素可并行计算的集合 RDD允 ...
- Beaglebone Back学习四(GPIO实验)
GPIO Beaglebone Back开发板引出了92个引脚,其中只有65个GPIO口可通过配置使用,由于引脚具有“复用”的特性,大约每个引脚有8种工作模式(Beagle System Refere ...
- Spark菜鸟学习营Day3 RDD编程进阶
Spark菜鸟学习营Day3 RDD编程进阶 RDD代码简化 对于昨天练习的代码,我们可以从几个方面来简化: 使用fluent风格写法,可以减少对于中间变量的定义. 使用lambda表示式来替换对象写 ...
- Spark菜鸟学习营Day1 从Java到RDD编程
Spark菜鸟学习营Day1 从Java到RDD编程 菜鸟训练营主要的目标是帮助大家从零开始,初步掌握Spark程序的开发. Spark的编程模型是一步一步发展过来的,今天主要带大家走一下这段路,让我 ...
随机推荐
- git rm -r --cached解决已提交的文件在.gitignore中加入忽略后无效的问题。
有时候,发现有不该提交的文件已经提交后,仅仅在.gitignore中加入忽略是不行的.这个时候需要执行: git rm -r --cached 文件/文件夹名字 去掉已经托管的文件,然后重新提交: g ...
- python基础入门之二 —— 条件、循环语句
1.条件语句 if if…else… 多重if if嵌套 三目运算符 (化简的if else) if 条件: 条件成立执行代码1 条件成立执行代码2 if False: print('if判断 ...
- 微信小程序入门笔记-审核上线(5)
1.点击上传 2.填写版本号.备注 3.https://mp.weixin.qq.com/回到微信公众平台,点击版本管理就可以看到开发版本 4.点击提交审核(提交之前填写小程序基本资料,才可提交审核) ...
- IDEA 代码量统计(Statistic)
IDEA 代码量统计(Statistic) 1.1 前言 项目到了一定阶段,都会想要看看项目的代码量情况,这里主要使用插件Statistic进行代码统计查看. 1.2 安装插件步骤 找到插件市场入口并 ...
- 剑指offer-面试题61-扑克牌中的顺子-数组
/* 题目: 从扑克牌中随机抽取n个数字,判断他们是否连续,扑克牌从A~K,大小王可代替任意数字. */ #include<iostream> #include<cstdlib> ...
- Android开发中按钮的语法
按钮的主要作用就是触发一个动作,所以会用到监听器. 如何为按钮添加单机事件监听器: 1.匿名内部类作为单机事件监听器 案例: 首先在.xml文件中添加一个按钮一,然后设置其id属性,然后在main里获 ...
- node模块化开发基本知识学习笔记
传统非模块化开发缺点: 1.命名冲突 2.文件依赖 标准的模块化规范: 1.AMD-requirejs 2.CMD-seajs 服务器端模块化规范: 1.CommonJS-Node.js 模块化相关的 ...
- Markdown 的效果
这是一级标题 这是二级标题 这是三级标题 这是四级标题 这是五级标题 这是六级标题 这是加粗的文字 这是倾斜的文字 这是斜体加粗的文字 这是加删除线的文字 这是引用的内容 这是引用的内容 这是引用的内 ...
- 深入理解 C/C++ sizeof() 运算符
过去有一段时间一直以为带个括号的 \(sizeof()\) 是 \(C/C++\) 的原生函数QAQ. 其实不然,\(sizeof\) 同位运算符(^|&~!)一样是一种单目运算符,作用于变量 ...
- Magento2 updated quote_item table - 更新quote_item 表自定义字段
/** * @param $class * @return mixed */ public function mc_get_obj($class) { return \Magento\Framewor ...