4.1 Value类型

  1. map(func):func类型为T => T
  2. mapPartitions(func)
    1. 类似于map,但独立地在RDD的每一个分片上运行
    2. func类型为Iterator[T] => Iterator[U]
  3. mapPartitionsWithIndex(func)
    1. 类似于mapPartitions,但func带有一个整数参数表示分片的索引值
    2. func的类型为(Int, Iterator[T] => Iterator[U])
  4. flatMap(func)
    1. 类似于map,只是每一个输入元素可以映射成0或多个元素
    2. func类型为T => Seq[U]
  5. glom:将每一个分区形成一个数组,形成新的RDD[Array[T]]
  6. groupBy(func),按照func计算出的值分组
  7. filter(func),输出func计算后返回值为true的输入元素
  8. sample(withReplacement, fraction, seed)
    1. 以指定的种子随机抽样出数量为fraction的数据
    2. withReplacement: {true, false}是否放回
    3. fraction:抽样数量
  9. distinct([numTasks])
    1. 去重
    2. 默认只有8个并行任务,即numTasks默认为8
  10. coalesce(numPartitions):缩减分区至numPartitions
    1. 可以选择是否进行shuffle
  11. repatition(numPartitions):随机分区至numPatitions个分区里
    1. 实际上是调用了coalesce(numPartitions, shuffle=true)
  12. sortBy(func, [ascending], [numTasks]):按照func处理后的结果进行排序
  13. pipe(command, [envVars]):对每一个分区都执行一个shell脚本

    4.2 双value类型交互

  14. union(otherRdd):并集

  15. subtract(otherRdd):差集
  16. intersection(otherRdd):交集
  17. cartesian(otherRdd):计算笛卡尔积(别用)
  18. zip(otherRdd):组合成Key-Value形式

    4.3 Key-Value类型

  19. partitionBy(partitioner):对Key-Value类型的RDD进行再分组

  20. reduceByKey(func, [numTasks]):按照key进行reduce
  21. groupByKey():按照key进行分组,返回key-seq类型的RDD,seq中存储key对应的值
  22. aggregateByKey(zeroValue)(seqOp, combOp):
    1. 先按照每个分区每个key进行reduce操作,再将不同分区相同key的结果进行聚合
    2. zeroValue:给每一个分区中的每一个key一个初始值
    3. seqOp:在每一个分区中使用初始值逐步reduce value
    4. combOp:合并不同分区中相同key的结果
  23. foldByKey(zeroValue)(func):aggregateByKey的简化版,相当于seqOp和combOp使用相同函数
  24. combineByKey(createCombiner, mergeValue, mergeCombiners)
    1. createCombiner:对分区内每种key的第一个值进行处理
    2. mergeValue:对分区内相同key的值进行reduce
    3. mergeCombiners:对分区间相同的key的值进行聚合
  25. sortByKey([ascending], [numTasks]):对key进行排序,key需要实现Ordered接口
  26. mapValues(func):只对value进行map
  27. join(otherDataset, [numTasks]):按照key进行join,生成(K,(V,W))的RDD
  28. cogroup(otherDataset, [numTasks]):将两个rdd中key相同的value聚合到一个迭代器