Spark学习之RDD编程(2)

1. Spark中的RDD是一个不可变的分布式对象集合。

2. 在Spark中数据的操作不外乎创建RDD、转化已有的RDD以及调用RDD操作进行求值。

3. 创建RDD:1)读取一个外部数据集2)在驱动器程序里分发驱动器程序中的对象集合。

4. RDD支持的操作:

1)转换操作,由一个RDD生成一个新的RDD。
2)行动操作,对RDD进行计算结果,并把结果返回到驱动器程序中,或者把结果存储到外部存储系统(如HDFS)。

5. Spark程序或者shell会话都会按如下方式工作:

1)从外部数据创建出输入RDD。
2)使用诸如filter()这样的转化操作对RDD进行转化,以定义一个新的RDD。
3)告诉Spark对需要被重用的中间结果RDD执行persist()操作。
4)使用行动操作 (例如count()和first()等)来触发一次并行计算,Spark会对计算进行优化后在执行。

6. 创建RDD

快速创建RDD,把程序中一个已有的集合传给SparkContext的parallelize()方法,不过这种方法除了开发原型和测试时,这种方式用的并不多。
Python中的parallelize()方法
    lines = sc.parallelize(["pandas","i like pandas"])
Scala中的parallelize()方法
    val lines = sc.parallelize(List("pandas","i like pandas"))
Java中的parallelize()方法
    JavaRDD<String> lines = sc.parallelize(Arrays.asList("pandas","i like pandas"))

7. 惰性求值

RDD的转化操作都是惰性求值的。

8. 向Spark传递函数

8.1 Python
传递比较短的函数,使用lambda表达式来传递;也可以传递顶层函数或是定义的局部函数。
8.2 Scala,可以定义的内联函数、方法的引用或静态方法传递给Spark,就行Scala的其他函数式API一样。
8.3 Java,函数需要作为实现了Spark的org.apache.spark.api.java.function包中的任一函数接口的对象来传递。

9. 常见的转化操作和行动操作

9.1 针对个元素的转化操作
flatmap() 对每个输入元素生成多个输出元素。
map() 接受一个函数,把这个函数用于RDD中的每个元素,将函数的返回结果作为结果RDD中的对应元素的。返回的类型不必和输入类型相同。
filter() 接受一个函数,并将RDD中满足该函数的元素放入新RDD中返回。
distinct() 去重
sample(withReplacement,fraction,[seed]) 对RDD采样,以及是否替换
9.2 伪集合操作
合并和相交要求RDD数据类型相同。
(不需混洗)union() 生成一个包含两个RDD中所有元素的RDD
(需要混洗)intersection() 求两个RDD共同的元素的RDD
(需要混洗)subtract() 移除一个RDD中的内容
(需要混洗)cartesian)() 与另一个RDD的笛卡尔积

Spark学习之RDD编程(2)的更多相关文章

  1. Spark学习之RDD编程总结

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

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

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

  3. Spark学习(2) RDD编程

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

  4. 02、体验Spark shell下RDD编程

    02.体验Spark shell下RDD编程 1.Spark RDD介绍 RDD是Resilient Distributed Dataset,中文翻译是弹性分布式数据集.该类是Spark是核心类成员之 ...

  5. Spark学习之RDD

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

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

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

  7. Spark学习摘记 —— RDD行动操作API归纳

    本文参考 参考<Spark快速大数据分析>动物书中的第三章"RDD编程",前一篇文章已经概述了转化操作相关的API,本文再介绍行动操作API 和转化操作API不同的是, ...

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

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

  9. spark学习(10)-RDD的介绍和常用算子

    RDD(弹性分布式数据集,里面并不存储真正要计算的数据,你对RDD的操作,他会在Driver端转换成Task,下发到Executor计算分散在多台集群上的数据) RDD是一个代理,你对代理进行操作,他 ...

随机推荐

  1. JDBC的流数据

    以下内容引用自http://wiki.jikexueyuan.com/project/jdbc/streaming-data.html: PreparedStatement对象必须具备使用输入和输出流 ...

  2. JDBC实例代码

    以下内容引用自http://wiki.jikexueyuan.com/project/jdbc/sample-code.html: 前提: 1.在MySQL中创建数据表和增加模拟数据: DROP TA ...

  3. 剑指Offer - 开始没做出来 —— 验证后序序列是否正确

    https://www.nowcoder.net/practice/a861533d45854474ac791d90e447bafd?tpId=13&tqId=11176&tPage= ...

  4. UVa 10950 - Bad Code

    题目:有一种编码方式.串仅仅有小写字母构成,每一个小写字母相应一个数字,如今给你妆化后的数字串, 问有多少个原串与之相应,注意数字串里可能有一个前导0. 分析:搜索.按字母顺序存储映射表,按字母顺序匹 ...

  5. Nodejs 一个简单的后台实例

    http://blog.csdn.net/u014595019/article/details/50845726

  6. VB打开project时出现冲突名称提示

    在敲机房时因为窗口命名不合适,我就改动了下窗口.可是保存后再打开的时候.却出现以下的提示: 这样的情况出现.通常是因为引用了别人的窗口文件,或者是改动窗口的名字可是就是找不到不论什么冲突的地方.事实上 ...

  7. go3--常量和类型转换

    /* Go中不存在隐式转换,所有类型转换必须显式声明 转换只能发生在两种相互兼容的类型之间 类型转换的格式: <ValueA> [:]= <TypeOfValueA>(< ...

  8. SIM卡APDU指令【转】

    本文转载自:http://blog.csdn.net/hlx156/article/details/54136756 一个APDU可以是一个命令,也可以是命令的响应. 命令APDU的一般格式: CLA ...

  9. sparksql语句

    (1)in 不支持子查询 eg. select * from src where key in(select key from test);支持查询个数 eg. select * from src w ...

  10. bzoj 1774: [Usaco2009 Dec]Toll 过路费【排序+Floyd】

    非常迷的一道题啊 我觉得挺对的版本只得了30 总之就是Floyd·改,开两个数组,一个是d[i][j]就是普通的只有边权的最短路,a[i][j]是题目要求的那种 具体改的地方是把枚举中转点的地方把中转 ...