RDD的常用转换算子和行动算子

    -转换算子Transformation
        *转换算子执行完毕之后,会创建新的RDD,并不会马上执行计算
        *map
            对RDD中的元素进行一个个映射

        *mapPartitions
            以分区为单位,对RDD中的元素进行映射

        *mapPartitionsWithIndex
            以分区为单位,对RDD中的元素进行映射,并且带分区编号

        *flatMap
            对RDD中的元素进行扁平化处理

        *glom
            将RDD中每一个分区中的单个元素,转换为数组

        *groupBy
            按照一定的规则,对RDD中的元素进行分组

        *filter
            按照一定的规则,对RDD中的元素进行过滤

        *sample
            >参数1:是否抽样放回    true放回    false不放回
            >参数2
                参数1 true     期望元素出现的次数        > 0 
                参数1 false 每一个元素出现的概率    [0,1]
            >参数3
                随机算法的初始值(种子)

            >takeSample(行动算子)

        *distinct
            去重
            底层是通过map + reduceByKey完成去重操作

        *改变分区
            >coalesce
                一般用于缩减分区,默认不执行shuffle
            >repartition    
                一般用于扩大分区,默认执行shuffle
                底层调用的就是coalesce

        *sortBy
            按照指定规则,对RDD中的元素进行排序,默认升序

        *pipe
            对于RDD中的每一个分区,都会执行pipe算子中指定的脚本

        *union
            合集

        *intersection
            交集

        *subtract
            差集

        *zip
            拉链
            注意:必须要保证分区数以及每一个分区中元素的个数一致


        *partitionBy
            按照指定的分区器,通过key对RDD中的元素进行分区
            默认分区器 HashPartitioner

        *reduceByKey
            将相同的key放在一起,对Value进行聚合操作

        *groupByKey
            按照key对RDD中的元素进行分组

        *aggregateByKey(zeroValue)(分区内计算规则,分区间计算规则)

        *foldByKey(zereValue)(内间计算规则)
            是aggregateByKey的简化,区内和分区间计算规则相同

        *combineByKey(对当前key的value进行转换,分区内计算规则,分区间计算规则)


        *几种聚合算子对比
            >reduceByKey(_+_)
                combineByKeyWithClassTag[V]((v: V) => v, func, func)

            >aggregateByKey(zeroValue)(cleanedSeqOp,combOp)
                combineByKeyWithClassTag[U]((v: V) => cleanedSeqOp(createZero(), v),cleanedSeqOp, combOp)

            >foldByKey
                combineByKeyWithClassTag[V]((v: V) => cleanedFunc(createZero(), v),cleanedFunc, cleanedFunc)

            >combineByKey
                combineByKeyWithClassTag(createCombiner, mergeValue, mergeCombiners)    

        *sortByKey
            按照RDD中的key对元素进行排序

        *mapValues
            只对RDD中的Value进行操作

        *join&cogroup

    -行动算子Action
        *行动算子执行后,才会触发计算
        *reduce
            对RDD中的元素进行聚合

        *collect.foreach和foreach
            >collect.foreach
                将每一个Excutor中的数据收集到Driver,形成一个新的数组
                .foreach不是一个算子,是集合的方法,是对数组中的元素进行遍历

            >对RDD中的元素进行遍历

        *count
            获取RDD中元素的个数

        *countByKey
            获取RDD中每个key对应的元素个数

        *first
            获取RDD中第一个元素

        *take
            获取RDD中的前几个元素

        *takeOrdered
            获取排序后的RDD中的前几个元素

        *aggregate&fold
            >aggregateByKey  处理kv类型的RDD,并且在进行分区间聚合的时候,初始值不参与运算
            >fold 是aggregate的简化版

        *save相关的算子
            >saveAsTextFile
            >saveAsObjectFile
            >saveAsSequenceFile(只针对KV类型RDD)    

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值