Spark RDD
yore
算子 | 类型 | 说明 |
++ |
| 合并两个RDD |
aggregate | 执行算子 | 根据初始化值进行对rdd种的元素进行聚合,结束之后每个分区会有一个结果,后面会根据这个分区结果再进行一次聚合 |
aggregateByKey | 执行算子 | 和aggregate类似,但是操作的是RDD是Pair类型 |
cache() | 控制操作 | 当第一次遇到Action算子时才会触发持久化操作。 Cache()是persis的一种特殊情况,将RDD持久化到内存中 |
转换算子 | ||
Cartesian | 转换算子 | 计算两个RDD之间的笛卡尔乘积,并将它们作为新的RDD返回 |
coalesce | 转换算子 | 将RDD进行重分区,使用HashPartitioner。 它的简版是repartition算子 |
Cogroup | 转换算子 | 相当于SQL中的全外关联full outer join,返回左右RDD中的记录,关联不上的为空。 |
Collect | 执行算子 | 一个RDD转换成数组。根据一个偏函数返回一个符合偏函数的结果集RDD。 即将RDD转换成数组 |
collectAsMap |
| 一个RDD转换成Map |
combineByKey | 转换算子 | 将RDD[K,V]转换成RDD[K,C],这里的V类型和C类型可以相同也可以不同。(单个值类型v操作 , 同分区内合并操作 , 多分区间的合并操作 ) |
Count | 执行算子 | 返回RDD中的元素数量 |
countByKey | 执行算子 | 统计RDD[K,V]中每个K的数量。 |
createCombiner | 参数 | 组合器函数,用于将V类型转换成C类型,输入参数未RDD[K,V]中的V,输出为C |
distinct | 转换算子 | 去除RDD重复的元素,返回所有元素不重复的RDD |
flatMap | 转换算子 | 类似于map。1对多,可以理解成将原来的数据集拍扁了。RDD中每个元素可生成一个或多个元素构成的新RDD 例如将数组、列表拆分成单个值或字符串拆分成单个字符 |
flatMapValues | 转换算子 | 类似于flatMap,只不过flatMapValues是针对[K,V]中的V值进行flatMap操作。 |
filter | 转换算子 | 过滤,根据里面的规则返回(true的)一个过滤过后的rdd |
First | 执行算子 | 返回RDD中的第一个元素,不排序。 |
Fold | 执行算子 | 是aggregate的简化版,将aggregate中的seqOp和combOp使用同一个函数op。 |
foldByKey | 转换算子 | 作用于RDD[K,V],根据K将V做折叠、合并处理。 |
foreach | 执行算子 | 遍历RDD,将函数f应用于每一个元素。 需要注意如果RDD执行foreach,只会在Executor端有效,并且不是Driver端 |
foreachPartition | 执行算子 | 与foreach类似,只不过是对每一个分区使用f |
fullOuterJoin | 转换算子 | 类似于SQL的全连接, |
glom | 转换算子 | 将RDD中每一个分区中所有类型为T的元素转换成Array[T] |
groupBy |
| 根据业务需求,按照自定义的返回值来分区 |
groupByKey | 转换算子 | 根据key将value进行分组。该函数用于将RDD[K,V]中每个K对应的V值,合并到一个集合Iterable[V]中 |
intersection | 转换算子 | 取交集。返回两个RDD中相同的数据集合,返回元素去重。类似于SQL中的inner join |
join | 转换算子 | 类似于SQL中的内关联join,只返回两个RDD根据K可以关联上的结果 |
leftOuterJoin | 转换算子 | 类似于SQL中的左外关联left outer join,返回结果以前面的RDD为主,关联不上的记录为空 |
Lookup | 执行算子 | 用于(K,V)类型的RDD,指定K值, 返回RDD中该K对应的所有V值。 |
map | 转换算子 | 对RDD中的每一个元素经过func函数转换后形成一个新的RDD |
mapPartitions | 转换算子 | 是map的一个变种。mapPartitions的输入函数是应用于每个分区,也就是把每个分区中的内容作为整体来处理的。 在映射过程中频繁创建额外的对象时mapPartitions比map高效,例如在RDD中创建数据库的连接等。 |
mapPartitionsWithIndex | 转换算子 | 函数作用同mapPartitions,不过提供了两个参数,第一个参数为分区的索引。 |
mapValues | 转换算子 | 类似于map算子,只不过此算子针对[K,V]值中的V值进行map。 进行输入函数应用于RDD中Kev-Value的Value,原RDD中的Key保持不变与新的Value一起组成新的RDD中的元素。如(panda,0)转成(panda,(0,1)) |
mergeValue | 参数 | 合并值函数,将一个C类型和V类型值合并成一个C类型,输入参数为(C,V),输出为C |
mergeCombiners | 参数 | 合并组合器函数,用于将两个C类型值合并成一个C类型,输入参数为(C,C),输出为C |
numPartition | 参数 | 结果RDD分区数,默认保持原有分区数 |
partitionBy | 转换算子 | 该函数根据partitioner函数生成新的ShuffleRDD,将原RDD重新分区。 |
persist() | 控制操作 | persis(level:StorageLevel)可以传入缓存级别,默认是MEMORY_ONLY,此时同cache()操作 |
转换算子 | ||
randomSplit | 转换算子 | 该函数根据weights权重,将一个RDD切分成多个RDD。 |
Reduce | 执行算子 | 将RDD中元素两两传递给输入函数,同时产生一个新的值。 根据映射函数,对RDD中的元素进行二元计算 |
reduceByKey | 转换算子 | 对元素为RDD[K,V]对的RDD中Key相同的元素的Value进行reduce |
reduceByKeyLocally | 转换算子 | 和reduceByKey类似。 RDD[K,V]中每个K对应的V值根据映射函数来运算,运算结果映射到一个Map[K,V]中,而不是RDD[K,V]。 |
repartition | 转换算子 | 该函数其实就是coalesce函数第二个参数为true的实现 |
rightOuterJoin | 转换算子 | 类似于SQL中的右外关联right outer join,返回结果以参数中的RDD为主,关联不上的记录为空 |
saveAsHadoopFile | 存储操作 | 将RDD存储在HDFS上的文件中,支持老版本Hadoop API。 可以指定outputKeyClass、outputValueClass以及压缩格式 |
执行算子 | ||
saveAsHadoopDataset | 存储操作 | 可以用于将RDD保存到除了HDFS的其他存储中,比如HBase。 在JobConf中通常需要关注或设置5个参数:文件保存路径、Key值的class类型、value值的class类型、RDD的输出格式(OutputFormat)以及压缩相关的参数 |
执行算子 | ||
saveAsNewAPIHadoopFile | 存储操作 | 用于将RDD数据保存到HDFS上,使用新版本的Hadoop API,用法基本同saveAsHadoopFile |
执行算子 | ||
saveAsNewAPIHadoopDataset | 存储操作 | 该方法作用同saveAsHadoopDataset, 只不过采用新版本的Hadoop API |
执行算子 | ||
saveAsObjectFile | 存储操作 | 将RDD中的元素序列化成对象,存储到文件中。 对于HDFS,默认采用SequenceFile保存 |
执行算子 | ||
saveAsSequenceFile | 存储操作 | 将RDD以SequenceFile的文件格式保存到HDFS上。 |
执行算子 | ||
saveAsTextFile | 存储操作 | 将RDD以文本文件的格式存储到文件系统中。 |
执行算子 | ||
sortBy | 执行算子 | 排序。根据规则来定义排序。true升序 false,升序 |
sortByKey | 执行算子 | 排序。根据按value的排序 |
subtract | 转换算子 | 该函数类似于intersection,但返回在RDD中出现,并且不在otherRDD中出现的元素,不去重。 |
subtractByKey | 转换算子 | 和基本转换操作中的subtract类似。只不过这里是针对K的,返回在主RDD中出现,并且不在otherRDD中出现的元素。 |
take(n) | 执行算子 | 用于获取RDD中从0到n-1下标的元素,不排序。 |
takeOrdered | 执行算子 | 和top类似,只不过以和top相反的顺序返回元素 |
top | 执行算子 | 从RDD中,按照默认(降序)或者指定的排序规则,返回前num个元素 |
union | 转换算子 | 就是将两个RDD进行合并(类型需一致),返回两个RDD的并集,不去重。 |
zip | 转换算子 | 将两个RDD组合成Key/Value形式的RDD。这里默认两个RDD的partitio数以及元素数量都相同,否则会抛出异常 |
zipPartitions | 转换算子 | 将多个RDD按照partition组合成为新的RDD,该操作需要组合的RDD具有相同的分区数,但对于每个分区内的元素数量没有要求 |
zipWithIndex | 转换算子 | 将RDD中的元素和这个元素在RDD中的ID(索引号)组合成键/值对。 |
zipWithUniqueId | 转换算子 | 将RDD中元素和一个唯一ID组合成键/值对。该唯一ID生成的算法如下:①每个分区中第一个元素的唯一ID值为该分区索引号;②每个分区中第N个元素的唯一ID值为(前一个元素唯一ID-ID值)+(该RDD总的分区数) |