标签(空格分隔): 学习笔记


Spark编程模型的两种抽象:RDD(Resilient Distributed Dataset)和两种共享变量(支持并行计算的广播变量和累加器)。

RDD

RDD是一种具有容错性的基于内存的集群计算方法。
RDD特征:

  1. 分区(partition):有一个数据分片列表,能够将数据进行切分,切分后的数据能够进行并行极端,是数据集的原子组成部分;
  2. 函数(compute):计算每个分片,得出一个可遍历的结果,用于说明在父RDD上执行何种计算;
  3. 依赖(dependency):计算每个RDD对父RDD的依赖列表,源RDD没有依赖,通过依赖关系描述血统(lineage);
  4. 优先位置:每一个分片的优先计算位置;
  5. 分区策略:描述分区模式和数据存放的位置,

常用的RDD有很多种,每个Transformation操作都会产生一种RDD。

RDD依赖

  1. 窄依赖(narrow dependency)
    窄依赖是指父RDD的每一个分区都最多被一个子RDD的分区所使用。表现为一父一子或者多父一子。
  2. 宽依赖(wide dependency)
    子RDD的每个分区都依赖于所有父RDD的所有分区或者多个分区。

创建RDD

  1. 集合(数组)创建RDD
    通过并行集合(数组)创建RDD,主要调用SParkContext的parallelize方法;
  2. 存储创建RDD
    可以从各种分布式文件创建,也可以从支持Hadoop输入格式数据源创建。

RDD操作

应用逻辑是通过一系列Transformation和Action来表达的,前者在RDD之间指定处理的相互依赖关系,后者指定输出的形式。

  • Transformation:是指该操作从已经存在的数据及上创建一个新的数据集,是数据集的逻辑操作,并没有进行真正的计算;
  • Action:指该方法提交一个与前一个Action之间的所有Transformation组成的job进行计算,Spark会根据Action将作业切分成多个Job。·

共享变量

  1. 广播变量
    可以在内的所有节点中被访问,用户缓存变量(只读);

    val broadcastVar = sc.broadcast(Array(1,2,3))

  2. 累加器
    只能用来做加法的变量,如计数和求和。

    val accum = sc.accumulator(0)

Spark学习(一)--RDD操作的更多相关文章

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

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

  2. Spark学习之RDD

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

  3. Spark学习之RDD编程总结

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

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

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

  5. spark 学习_rdd常用操作

    [spark API 函数讲解 详细 ]https://www.iteblog.com/archives/1399#reduceByKey [重要API接口,全面 ] http://spark.apa ...

  6. spark 学习(二) RDD及共享变量

    声明:本文基于spark的programming guide,并融合自己的相关理解整理而成      Spark应用程序总是包括着一个driver program(驱动程序),它运行着用户的main方 ...

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

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

  8. Spark学习摘记 —— RDD转化操作API归纳

    本文参考 在阅读了<Spark快速大数据分析>动物书后,大概了解到了spark常用的api,不过书中并没有给予所有api具体的示例,而且现在spark的最新版本已经上升到了2.4.5,动物 ...

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

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

  10. Spark学习之RDD的理解

    转自:http://www.infoq.com/cn/articles/spark-core-rdd/ 感谢张逸老师的无私分享 RDD,全称为Resilient Distributed Dataset ...

随机推荐

  1. ASP.NET MVC的TempData(转载)

    本文章基于ASP.NET MVC Preview5. ASP.NET MVC的TempData用于传输一些临时的数据,例如在各个控制器Action间传递临时的数据或者给View传递一些临时的数据,相信 ...

  2. mybatis 相关总结

    1. Mybatis的<where><foreach><set>等标签详解:http://blog.csdn.net/zenson_g/article/detail ...

  3. scala 隐式转换

    先参考这篇文章:http://www.jianshu.com/p/a344914de895 package com.test.scalaw.test /** * scala隐式转换 */ object ...

  4. Linux程序存储结构与进程结构堆和栈的区别【转】

    转自:http://www.hongkevip.com/caozuoxitong/Unix_Linux/24581.html 红客VIP(http://www.hongkevip.com):Linux ...

  5. 【PHP设计模式 10_ShiPeiQi.php】适配器模式

    <?php /** * [适配器模式] * 对于服务器的代码,需要不同的客户端都可以调用 * 也可能是新的程序员要修改以前程序员写的老代码 */ header("Content-typ ...

  6. for_each()的返回值

    有三种办法可以从“运用了function object”的算法中获取“结果”或“反馈”: 1.在外部持有状态,并让function object指向它: 2.以by reference方式传递func ...

  7. CSS3前缀自动补全方案和插件

    第一种方法:prefix free,js插件,大小2kb,直接导入,无需任何浏览器兼容前缀 <script src="prefixfree.min.js"></s ...

  8. hashMap底层put和get方法逻辑

    1.hashmap put方法的实现: public V put(K key, V value) { if (key == null) return putForNullKey(value); int ...

  9. 如何在plSql查询数据查出的数据可编辑

    最近开发项目时要经常自己造数据,遇到好多查询出数据时要进行修改.上网查询资料 总结如下: plSql允许查询数据可以编辑的条件是必须查询出rowid 在某个表上点击query data 出现的sql语 ...

  10. ISO C90 forbids mixed declarations and code 警告

    编译的时候经常会遇到   ISO C90 forbids mixed declarations and code 警告百度了一下,知道是如下原因 : 变量定义之前任何一条非变量定义的语句(注意:语句是 ...