Loading


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
    操作每一个分区



posted on 2020-02-13 19:57  一氓  阅读(88)  评论(0编辑  收藏  举报