zoukankan      html  css  js  c++  java
  • RDD

    什么是RDD(Resilient Distributed Dataset)


      RDD叫作弹性分布式数据集合,是spark中最基本的数据(计算、逻辑)抽象,在代码中它是一个抽象类,代表一个不可变、可分区、里面的元素的可并行计算的集合。

    RDD属性


    1.一组分区,即数据集的基本组成单位
    2.一个计算每个分区的函数
    3.RDD之间存在依赖关系(血统)
    4.一个Partitioner,即RDD的分片函数
    5.一个列表,存储存取每个Partition的优先位置(移动数据不如移动计算)

    • 进程本地化
    • 节点本地化
    • 机架本地化

    RDD特点


      RDD表示只读的分区的数据集,对RDD进行改动,只能铜鼓RDD的转换操作,由一个RDD得到一个新的RDD,新的RDD包含了从其他RDD衍生所必须的信息。RDDs之间存在依赖,RDD执行的是按照血缘关系延时计算的。如果血缘关系较长,可以通过持久化RDD来切断血缘关系。如果程序中多次使用同一个RDD,可以将该RDD进行缓存,只有在第一次计算的时候回根据血缘关系得到分区数据,在后续其他地方用到直接从缓存中取

    算子


    Spark中所有的RDD方法都称为算子,有转换算子和行动算子两大类。

    创建RDD


    有三种创建方式

    • 从集合中创建
    • 从外部存储创建
    • 从其他RDD创建

    注:以下都是在local部署模式下的条件上说明

    从集合中创建

    spark提供了两种函数:parallelize()和makeRDD(),底层实现都是用的parallelize()
    1.使用parallelize()

    val  arrayRDD = sc.parallelize(Array(1,2,3,4))
    val  arrayRDD = sc.parallelize(Array(1,2,3,4),X) #自定义分区数量,默认是8
    

    2.使用makeRDD()

    val listRDD = sc.makeRDD(lsit(1,2,3,4))
    

    从外部存储系统的数据集创建

    默认情况下,可以读取项目路径,也可以读其他路径,例如HDFS

    val fileRDD = sc.textFile("XXX")
    val fileRDD = sc.textFile(("XXX"),X) #这里自定义分区为最小分区数,具体如何分区依赖于hadoop的切片规则
    

    RDD的转换

    **RDD整体上分为Value类型和Key-Value类型

    任务的划分&调度

    一个分区划分一个任务(Task),一个任务会被分配到Executor执行

  • 相关阅读:
    linux系统中fdisk命令进行磁盘分区
    linux系统中挂载mount命令、umount命令
    linux系统中du命令
    linux系统中独立冗余磁盘阵列RAID
    linux vmware虚拟机添加硬盘
    linux系统中部署raid10磁盘阵列
    linux系统中配置磁盘容量配额服务(quota)
    linux系统中添加swap交换分区、删除swap交换分区
    linux系统中软链接和硬链接
    调试流程(暂定)
  • 原文地址:https://www.cnblogs.com/zqzhen/p/12747554.html
Copyright © 2011-2022 走看看