前言 本人是Spark技术学习与爱好者。本书为本人在阅读Spark源码时做的笔记和 一些心得。这里拿出来分享。希望和阅读者一起交流探讨。 “本书”,完全为免费分享,书中类容也有一些内容摘自网络。这里没有何人 侵权意识。 书中类容,可能比较含糊。如果阅读不同,大家不要骂人哈!我也只是自己学习 中的记录。 欢迎大家和我交流: 邮件:624308915@qq.com RDD RDD全称Resilient Distributed DataSets,弹性的分布式数据集。是Spark的核心内容。 RDD是只读的,不可变的数据集,也拥有很好的容错机制。他有5个主要特性 - A list of partitions 分片列表,数据能为切分才好做并行计算 - A function for computing each split 一个函数计算一个分片 - A list of dependencies on other RDDs 对其他RDD的依赖列表 - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash- partitioned) RDD 可选的,key-value型的RDD,根据hash来分区 - Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file) 可选的,每一个分片的最佳计算位置 RDD是Spark所有组件运行的底层系统,RDD是一个容错的,并行的数据结构,它 提供了丰富的数据操作和API接口 Spark中的RDD API 一个RDD可以包含多个分区。每个分区都是一个dataset片段。RDD之间可以相互 依赖 窄依赖:一一对应的关系,一个RDD分区只能被一个子RDD的分区使用的关系 宽依赖:一多对应关系,若多个子RDD分区都依赖同一个父RDD分区 如下RDD图览 在源码package org.apache.spark.rdd.RDD中有一些比较中的方法: 1) /** * Impl