RDD

作者: Frank_8942 | 来源:发表于2019-06-18 00:59 被阅读0次

    RDD是弹性分布式数据集;

    Internally, each RDD is characterized by five main properties:
     *  - A list of partitions
     *  - A function for computing each split
     *  - A list of dependencies on other RDDs
     *  - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
     *  - Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)
    
    rdd具有5个特性:
    
    1. 分区列表
    rdd是被分区的,每个分区都会被一个task处理,分区数决定并行计算数量,rdd的并行度默认从父rdd传给子rdd; 默认情况下,hdfs上的块文件数就是spark处理时的分区数量,当然也可以在创建RDD时,人为指定RDD的分区数量,同时RDD的分区数最好设置为集群core数量的2-3倍;
    
    2. 计算函数
    spark的RDD的计算函数是以分片为基本单位的,每个RDD都会实现compute函数,对每个分区内的数据进行计算;其中,RDD的算子有宽窄依赖算子的分类,决定是否划分stage, 同时也有transformation和action算子的分类,决定是否触发job; 
    
    3. 血缘关系
    由于RDD每次转换都会生成新的RDD,所以RDD会形成类似流水线的前后依赖关系;
    
    4. 分区器
    分区只发生在shuffle阶段, 分区器控制分区规则和下游的分区数;当前Spark中实现了两种类型的分片函数,一个是基于哈希的HashPartitioner,另外一个是基于范围的RangePartitioner; 并且只有对于key-value的RDD,才会有Partitioner,非key-value的RDD的Parititioner的值是None; 
    
    5. 分区数据的位置列表
    此列表存储了每个Partition的优先位置,对于HDFS文件来说,就是每个分区数据的位置; 有了数据位置信息后,就可以实现数据不动代码动的特点,使得计算发生在本地;
    
    

    相关文章

      网友评论

          本文标题:RDD

          本文链接:https://www.haomeiwen.com/subject/fefahqtx.html