02、体验Spark shell下RDD编程

1、Spark RDD介绍

RDD是Resilient Distributed Dataset,中文翻译是弹性分布式数据集。该类是Spark是核心类成员之一,是贯穿Spark编程的始终。初期阶段,我们可以把RDD看成是Java中的集合就可以了,在后面的章节中会详细讲解RDD的内部结构和工作原理。

2、Spark-shell下实现对本地文件的单词统计

2.1思路

word count是大数据学习的经典案例,很多功能实现都可以归结为是word count的使用。工作过程为使用SparkContext对象的textFile方法加载文件形成Spark RDD1,RDD1中每个元素就是文件中的每一行文本,然后对RDD的每个元素进行压扁flatMap操作,形成RDD2,RDD2中每个元素是将RDD1的每行拆分出来产生的单词,因此RDD2就是单词的集合,然后再对RDD2进行标一成对,形成(单词,1)的元组的集合RDD3,最后对RDD3进行按照key进行聚合操作形成RDD4,最终将RDD4计算后得到的集合就是每个单词的数量

2.2 处理流程

App->SparkContext: textFile加载文件
SparkContext->RDD1: 创建RDD
RDD1-->App: 返回RDD1
App->RDD1: flatMap压扁操作
RDD1->RDD2: 产生RDD2
RDD2-->App: 返回RDD2
App->RDD2: map标一成对
RDD2->RDD3: 产生RDD3
RDD3-->App: 返回RDD3
App->RDD3: reduceByKey聚合
RDD3->RDD4: 产生RDD4
RDD4-->App: 返回RDD4
App->RDD4: collect收集结果数据

2.3 分步实现代码

// 进入spark shell环境
$>spark-shell // 1.加载文件
scala>val rdd1 = sc.textFile("file:///homec/centos/1.txt") // 2.压扁每行
scala>val rdd2 = rdd1.flatMap(_.split(" ")) // 3.标1成对
scala>val rdd3 = rdd2.map(w=>(w,1)) // 4.按照key聚合每个key下的所有值
scala>val rdd4 = rdd3.reduceByKey(_+_) // 5.显式数据
scala>rdd4.collect()

2.4 一步实现代码

$scala>sc.textFile("file:///home/centos/1.txt")
.flatMap(_.split(" "))
.map((_,1))
.reduceByKey(_+_)
.collect

3、Spark-shell下实现对气温数据的最大最小聚合

3.1 思路分析

气温数据数各年度内气温列表,将每一行变换成(year,temp)元组后,按照yearn进行聚合即可。

3.2 处理流程

App->SparkContext: textFile加载文件
SparkContext->RDD1: 产生RDD1
RDD1-->App: 返回RDD1
App->RDD1: map变换每行为(year,(max,min))元组
RDD1->RDD2: 产生RDD2
RDD2-->App: 返回RDD2
App->RDD2: reduceByKey双聚合气温极值
RDD2->RDD3:产生RDD3
App->RDD3: collect()收集结果

3.3 分步实现代码

// 进入spark shell环境
$>spark-shell // 1.加载气温数据文件
scala>val rdd1 = sc.textFile("/home/centos/temps.dat") // 2.压扁每行
scala>val rdd2 = rdd1.flatMap(e=>{
val arr = e.split(" ")
(arr(0).toInt, (arr(1).toInt ,arr(1).toInt))
}) // 3.reduceByKey
scala>val rdd3 = rdd2.reduceByKey((a,b)=>{
import scala.math
(math.max(a(0),b(0)) , math.min(a(1),b(1)))
}) // 4.收集日志
scala>rdd3.collect()

3.4 一步实现代码

$scala>sc.textFile("file:///home/centos/temps.dat")
.map(line=>{
val arr = line.split(" ")
(arr(0).toInt,(arr(1).toInt , arr(1).toInt))
})
.reduceByKey((a,b)=>{
import scala.math
(math.max(a(0) , b(0)) , math.min(a(1) , b(1)))
})
.collect()

02、体验Spark shell下RDD编程的更多相关文章

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

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

  2. Spark学习之RDD编程总结

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

  3. 在Scala IDEA for Eclipse或IDEA里程序编译实现与在Spark Shell下的对比(其实就是那么一回事)

    不多说,直接上干货! 比如,我这里拿主成分分析(PCA). 1.主成分分析(PCA)的概念介绍 主成分分析(PCA) 是一种对数据进行旋转变换的统计学方法,其本质是在线性空间中进行一个基变换,使得变换 ...

  4. spark 中的RDD编程 -以下基于Java api

    1.RDD介绍:     RDD,弹性分布式数据集,即分布式的元素集合.在spark中,对所有数据的操作不外乎是创建RDD.转化已有的RDD以及调用RDD操作进行求值.在这一切的背后,Spark会自动 ...

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

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

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

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

  7. Spark(四)【RDD编程算子】

    目录 测试准备 一.Value类型转换算子 map(func) mapPartitions(func) mapPartitions和map的区别 mapPartitionsWithIndex(func ...

  8. Spark学习(2) RDD编程

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

  9. 【spark 深入学习 05】RDD编程之旅基础篇-01

    ---------------- 本节内容 1.RDD的工作流程 2.WordCount解说  · shell版本WordCount  · java版本WordCount -------------- ...

随机推荐

  1. office word使用技巧汇总

    1.用MathType编辑的公式放在Word中有时会显示不全,仅显示其中一部分. 以下教程介绍解决Word中MathType公式显示不全的方法. 在Word中粘贴完公式后,选中该公式,在工具栏里选择“ ...

  2. 读书笔记:编程小白的第一本python入门书

    书名:编程小白的第一本python入门书 作者:侯爵 出版社/出处:图灵社区 年份:2016年 封面: 感想: 本书短小精悍,精华部分在于给编程小白打了鸡血的同时输出了一种“高效学习法的思想”. 个人 ...

  3. my19_mysql 多线程备份恢复工具mydumper

    mydumper适合库中有大表且CPU个数较多的场景,多用于恢复从库或单个实例 推荐用法**************************** mydumper -u automng -p root ...

  4. python 安装 第三方包

    ########1 (python 虚拟环境(如pycharm 中的 project )是一个独立的环境,所以也要重新安装一次第三方包) 上官网搜索 包 https://pypi.org/projec ...

  5. 转 sql profile 绑定 litera and move profile to another db l for spa

    SQL TYPE 1:for bind value sql , first create a good plan with literal and with good  profile. then u ...

  6. android 闹钟设置问题

    Android开发中,alarmManager在5.0以上系统,启动时间设置无效的问题 做一个app,需要后台保持发送心跳包.由于锁屏后CPU休眠,导致心跳包线程被挂起,所以尝试使用alarmMana ...

  7. java替换word2003

    map.put("year", year);            map.put("yearMonthDay", yearMonthDay);         ...

  8. pip安装flask问题解决

    环境:python 2.7 pip install virtualenv pip install flask 提示成功但无效 查看http://docs.jinkan.org/docs/flask/i ...

  9. inventor安装错误

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  10. [转]Javascript的匿名函数

    本文转自:http://dancewithnet.com/2008/05/07/javascript-anonymous-function/ 一.什么是匿名函数? 在Javascript定义一个函数一 ...