• [Spark]-RDD初识


    1.什么是RDD
      Resilient Distributed Dataset(RDD),弹性的分布式数据集.
      分布式数据集,是指数据集会以patition块的方式,存储在多个节点上.
      弹性,体现在Spark计算过程中将数据的抽象封装,依此带来的各种重试机制,内存和磁盘切换,高自由的分片函数等
        Hadoop的MapReduce,是基于数据集(物理)的处理,从物理存储上加载数据,操作数据,然后写入物理存储设备.不适用于大量迭代(重用中间成果的IO成本太高)
        Spark的RDD,是基于工作集(将数据集抽象封装)的处理.即保留数据集的位置感知,自动容错,负载均衡等优点,还具有抽象封装所带来的弹性,具体体现在:
          自动进行内存和磁盘存储的切换
          节点的弹性:节点基于Lineage的容错(第N个节点出错,会尝试从N-1个节点重新恢复数据)
          Task的弹性:Task失败会自动重试(默认4次)
          Stage的弹性:Stage失败也会进行重试,并且可以重计算失败的数据分片或者只重计算失败的步骤
          CheckPoint和Persist
          数据调度的弹性:DAG TASK和资源管理无关
          数据分片的高度弹性:人工自由设置分片函数和支持Repartition
    2.RDD的五大特性
      RDD是由多个Partition组成的一个List
      对RDD的每一个操作,都会对RDD里的每一个Partition执行同一个操作
      每一个RDD都会记录它的依赖(方便重新计算,缓存化或者CheckPoint)
      如果RDD里存放的是Key-Value的形式.则可以传入一个自定义的分区函数进行分区(比如自定义按Key分区,则会将不同RDD的相同Key都集中在一个Partition中)
      计算就近原则.计算会尽可能的放入split所在的节点中(应该是节点集,因为有数据副本)

  • 相关阅读:
    搜索自动提示的简单模拟JQuery
    log4j+AOP 记录错误日志信息到文件中
    利用firebug 查看JS方法, JS 调试
    Blog 使用Jsoup解析出html中的img元素
    jquery操作select(取值,设置选中)
    C++解析(20):智能指针与类型转换函数
    C++解析(19):函数对象、关于赋值和string的疑问
    C++解析(18):C++标准库与字符串类
    C++解析(17):操作符重载
    C++解析(16):友元与类中的函数重载
  • 原文地址:https://www.cnblogs.com/NightPxy/p/9240865.html
Copyright © 2020-2023  润新知