spark常用
Transformation
-
map
将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素。
输入分区与输出分区一对一 -
flatMap
每一个 input item可以被映射成0个或多个output item -
distinct
去重
创建RDD
-
parallelize
从一个Seq集合创建RDD -
makeRDD
从一个Seq集合创建RDD。 -
textFile
从HDFS文件创建
RDD转换
-
coalesce
将RDD重分区,使用HashPartitioner
第二个参数是否进行shuffle,默认false -
repartition
上述算子第二个参数为true -
mapPartitions
映射函数的参数为RDD中每一个分区的迭代器
如果在映射的过程中需要频繁创建额外的对象,使用mapPartitions要比map高效 (例如,将RDD中的所有数据通过JDBC连接写入数据库,如果使用map函数,可能要为每一个元素都创建一个connection,这样开销很大,如果使用mapPartitions,那么只需要针对每一个分区建立一个connection) -
mapPartitionsWithIndex
-
union
将2个RDD合并,不去重 -
intersection
返回2个RDD的交集 -
subtract
返回在RDD中存在,另一个不存在的元素,不去重 -
randomSplit
根据权重,将一个RDD切分为多个 -
glom
将RDD中每个分区的元素集合成Array
RDD键值转换
-
partitionBy
根据partitioner函数生成新的shuffleRDD,即重新分区 -
mapValues
对value进行map操作 -
flatMapValues
对value进行操作并合并分区 -
combineByKey
RDD[K,V] -> RDD[K,C] -
foldByKey
对RDD[K,V]根据K将V做折叠、合并处理 -
groupByKey
将RDD[K,V]中每个K对应的V值,合并到一个集合Iterable[V] -
reduceByKey
将RDD[K,V]中每个K对应的V值根据映射函数进行运算 -
reduceByKeyLocally
将RDD[K,V]中每个K对应的V值根据映射函数来运算,运算结果映射到一个Map[K,V]中 -
join
SQL中的内关联join
RDD action
-
first
返回第一个,不排序 -
count
-
reduce
对RDD中元素进行二元运算,返回结果 -
collect
将RDD转换成数组 -
take
等于数组get -
top
按排序top, 默认降序 -
takeOrdered
和top相反的顺序take -
aggregate
聚合RDD中元素 -
fold
使用相同seqOp和combOp的aggregate -
lookup
指定K值,返回RDD中该K对应的所有V -
foreach
遍历RDD,操作每一个元素 -
foreachPartition
操作每一个分区