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)

  • 相关阅读:
    内存映射的原理
    Intel 面试(就不该报外企,英语是硬伤)
    基于多进程和基于多线程服务器的优缺点及nginx服务器的启动过程
    pdflush机制
    百度面试
    同步IO和异步IO的区别
    阿里面试
    linux内核学习之四:进程切换简述
    static成员函数不能调用non-static成员函数
    C/C++函数调用方式
  • 原文地址:https://www.cnblogs.com/little-YTMM/p/5861882.html
Copyright © 2011-2022 走看看