reduce算子用于聚集RDD所有元素,先聚合分区内数据再聚合分区间数据。collect算子在驱动程序中以数组形式返回数据集所有元素。foreach算子分布式遍历RDD每个元素并调用指定函数。count算子返回RDD元素个数。first算子返回RDD第一个元素。take算子返回RDD前n个元素组成的数组。takeOrdered算子返回排序后的前n个元素组成的数组。aggregate算子分区数据通过初始值和分区内数据聚合后再和初始值进行分区间数据聚合。fold算子是aggregate的简化版操作。countByKey算子统计每种key的个数。save相关算子可将数据保存为不同格式文件。
partitionBy算子将数据按指定Partitioner重新分区,默认是HashPartitioner。groupByKey算子将数据根据key对value进行分组,有不同参数形式。reduceByKey算子将数据按相同key对value进行聚合,相比groupByKey在shuffle前可对分区内相同key数据预聚合,性能更高。aggregateByKey算子将数据根据不同规则进行分区内计算和分区间计算。foldByKey算子当分区内计算规则和分区间计算规则相同时,aggregateByKey可简化为foldByKey。combineByKey算子是最通用的对key – value型rdd进行聚集操作的聚集函数,允许用户返回值类型与输入不一致。sortByKey算子在一个(K,V)的RDD上调用,K须实现Ordered接口,返回按key排序的RDD。join算子在类型为(K,V)和(K,W)的RDD上调用,返回相同key对应的所有元素连接在一起的(K,(V,W))的RDD。leftOuterJoin算子类似于SQL语句的左外连接。cogroup算子在类型为(K,V)和(K,W)的RDD上调用,返回一个(K,(Iterable,Iterable))类型的RDD。
累加器用于把Executor端变量信息聚合到Driver端,通过在Driver程序中定义变量,Executor端每个Task得到该变量副本并更新,最后传回Driver端merge。自定义累加器可实现词频统计等功能。广播变量用于高效分发较大的对象,向所有工作节点发送一个较大的只读值供一个或多个Spark操作使用。例如在多个并行操作中使用同一变量时,可避免为每个任务分别发送。