zoukankan      html  css  js  c++  java
  • Spark学习(一)--RDD操作

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


    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)

  • 相关阅读:
    取得窗口大小和窗口位置兼容所有浏览器的js代码
    一个简单易用的导出Excel类
    如何快速启动chrome插件
    网页表单设计案例
    Ubuntu下的打包解包
    The source file is different from when the module was built. Would you like the debugger to use it anyway?
    FFisher分布
    kalman filter
    Group delay Matlab simulate
    24位位图格式解析
  • 原文地址:https://www.cnblogs.com/little-YTMM/p/5861882.html
Copyright © 2011-2022 走看看