Transformations 类算子,只是定义并描述数据形态的转换过程,并不立即执行计算
适用范围 | 用途 | 算子集合 | ||
任意RDD | 单个RDD转换 | map、mapPartitions、mapPartitionsWithIndex filter | ||
任意RDD | 与其它RDD组合 | union、intersection、join cogroup、cartesian | ||
任意RDD | 数据采集 | sample、distinct | ||
任意RDD | 数据分片重分布 | repartition、repartitionAndSortWithinPartitions | ||
paired RDD | 单个RDD的数据聚合 | groupByKey、sortByKey reduceByKey、aggregateByKey |
上边说了,Transformations类算子并不立即执行计算,当且仅当开发者调用 Actions 算子时,之前调用的转换算子才会付诸执行
适用范围 | 用途 | 算子集合 | ||
任意RDD | 收集数据到driver | collect、first、take takeSample、takeOrdered count | ||
任意RDD | 持久化数据 | saveAsTextFile、saveAsSequenceFile、saveAsObjectFile takeSample、takeOrdered | ||
任意RDD | 函数式操作 | foreach |
以下算子的执行,通常会发生数据跨节点的移动,从而触发shuffle操作
用途 | 描述 | 算子集合 | ||
repartition类的操作 | repartition类重分区操作,对之前所有的分区的数据进行随机,均匀的打乱,然后把数据放入下游新的指定数量的分区内 | repartition、repartitionAndSortWithinPartitions、coalesce | ||
byKey类的操作 | byKey类的操作需要对某个key进行聚合操作,那么肯定要保证集群中所有节点上的,相同的key,一般会移动到同一个节点上进行处理 | reduceByKey、groupByKey、aggregateByKey、sortByKey countByKey、foldByKey、combineByKey | ||
join类的操作 | join类的操作,通常是两个rdd进行需要join,就必须将相同join的key的数据,移动到同一个节点上,然后进行相同key的两个rdd数据的笛卡尔乘积 | join、cogroup |