4.1 Value类型
- map(func):func类型为T => T
- mapPartitions(func)
- 类似于map,但独立地在RDD的每一个分片上运行
- func类型为Iterator[T] => Iterator[U]
- mapPartitionsWithIndex(func)
- 类似于mapPartitions,但func带有一个整数参数表示分片的索引值
- func的类型为(Int, Iterator[T] => Iterator[U])
- flatMap(func)
- 类似于map,只是每一个输入元素可以映射成0或多个元素
- func类型为T => Seq[U]
- glom:将每一个分区形成一个数组,形成新的RDD[Array[T]]
- groupBy(func),按照func计算出的值分组
- filter(func),输出func计算后返回值为true的输入元素
- sample(withReplacement, fraction, seed)
- 以指定的种子随机抽样出数量为fraction的数据
- withReplacement: {true, false}是否放回
- fraction:抽样数量
- distinct([numTasks])
- 去重
- 默认只有8个并行任务,即numTasks默认为8
- coalesce(numPartitions):缩减分区至numPartitions
- 可以选择是否进行shuffle
- repatition(numPartitions):随机分区至numPatitions个分区里
- 实际上是调用了coalesce(numPartitions, shuffle=true)
- sortBy(func, [ascending], [numTasks]):按照func处理后的结果进行排序
pipe(command, [envVars]):对每一个分区都执行一个shell脚本
4.2 双value类型交互
union(otherRdd):并集
- subtract(otherRdd):差集
- intersection(otherRdd):交集
- cartesian(otherRdd):计算笛卡尔积(别用)
-
4.3 Key-Value类型
partitionBy(partitioner):对Key-Value类型的RDD进行再分组
- reduceByKey(func, [numTasks]):按照key进行reduce
- groupByKey():按照key进行分组,返回key-seq类型的RDD,seq中存储key对应的值
- aggregateByKey(zeroValue)(seqOp, combOp):
- 先按照每个分区每个key进行reduce操作,再将不同分区相同key的结果进行聚合
- zeroValue:给每一个分区中的每一个key一个初始值
- seqOp:在每一个分区中使用初始值逐步reduce value
- combOp:合并不同分区中相同key的结果
- foldByKey(zeroValue)(func):aggregateByKey的简化版,相当于seqOp和combOp使用相同函数
- combineByKey(createCombiner, mergeValue, mergeCombiners)
- createCombiner:对分区内每种key的第一个值进行处理
- mergeValue:对分区内相同key的值进行reduce
- mergeCombiners:对分区间相同的key的值进行聚合
- sortByKey([ascending], [numTasks]):对key进行排序,key需要实现Ordered接口
- mapValues(func):只对value进行map
- join(otherDataset, [numTasks]):按照key进行join,生成(K,(V,W))的RDD
- cogroup(otherDataset, [numTasks]):将两个rdd中key相同的value聚合到一个迭代器