– 1、RDD 中的数据可以存储在内存或者是磁盘
*RDD 五大特性:
–A list of partitions 一个分区列表,RDD 中的数据都存在一个分区列表里面
–A function for computing each split 作用在每一个分区中的函数
–A list of dependencies on other RDDs 一个 RDD 依赖于其他多个 RDD,这个点很重要,
RDD 的容错机制就是依据这个特性而来的
–Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is
hash-partitioned) 可选的,针对于 kv 类型的 RDD 才具有这个特性,作用是决定
了数据的来源以及数据处理后的去向
–Optionally, a list of preferred locations to compute each split on (e.g. block locations
for an HDFS file) 可选项,数据本地性,数据位置最优
2.2 、 概 述 一 下 spark 中 的 常 用 算 子 区 别 ( map 、
mapPartitions、foreach、foreachPartition)
• map:用于遍历 RDD,将函数 f 应用于每一个元素,返回新的 RDD(transformation 算子)。
• foreach:用于遍历 RDD,将函数 f 应用于每一个元素,无返回值(action 算子)。
• mapPartitions: 用 于 遍 历 操 作 RDD 中 的 每 一 个 分 区 , 返 回 生 成 一 个 新 的 RDD
(transformation 算子)。
• foreachPartition: 用于遍历操作 RDD 中的每一个分区。无返回值(action 算子)。
• 总结:一般使用 mapPartitions 或者 foreachPartition 算子比 map 和 foreach 更加高效,
推荐使用。
3.3、谈谈 spark 中的宽窄依赖
• RDD 和 它 依 赖 的 父 RDD ( s ) 的 关 系 有 两 种 不 同 的 类 型 , 即 窄 依 赖 ( narrow
dependency)和宽依赖(wide dependency)。
• 宽依赖:指的是多个子 RDD 的 Partition 会依赖同一个父 RDD 的 Partition
• 窄依赖:指的是每一个父 RDD 的 Partition 最多被子 RDD 的一个 Partition 使用。