算子整理

作者: 0_9f3a | 来源:发表于2017-12-31 08:27 被阅读0次

    Spark中有两类算子
    1.transformations(转换算子):延迟执行
    算子返回值是一个RDD
    2.Action(行动算子):触发执行
    算子返回值是非RDD类型

    transformations类算子
    1.map:将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素。
    2.filter:对元素进行过滤
    3.reduceByKey:按key值将两个值合并成一个值
    4.flatMap:输入一条数据,输出n>0条数据
    map与flatMap区别:
    flatMap:输入一条数据,输出N条数据
    map:输入一条数据,输出一条数据
    5.sample:将 RDD 这个集合内的元素进行采样,获取所有元素的子集。用户可以设定是否有放回的抽样、百分比、随机种子,进而决定采样方式.第一个参数:抽样的方式。第二个参数:抽样的比例。第三个参数:随机算法的初始值。
    6.sortByKey:根据key的大小来排序,默认升序排序
    7.sortBy:可以指定按照哪一个字段来排序
    8.mapPartitions:rdd的mapPartitions是map的一个变种,它们都可进行分区的并行处理。

    两者的主要区别是调用的粒度不一样:map的输入变换函数是应用于RDD中每个元素,而mapPartitions的输入函数是应用于每个分区。

    9.mapPartitionsWithIndex:可以拿到每一个partition的分区号,这个算子用于算法的测试
    10.repartitions:重分区,增加RDD分区数
    11.coalesce:重分区的算子,coalesce(,false)用于减少RDD的分区数
    12.Distinct:将RDD中的数据进行去重(去重是去除RDD中完全相同的数据)她的底层实现是map+ reduceByKey+foreach

    Action类算子
    1.foreach:遍历RDD.这个算子不会将传入的函数推送到Executor端执行,并不会将结果拉回到Driver端。但是如果使用的是collect算子来触发job执行,那么会将task的计算结果拉回到Driver端。collect算子慎用。
    2.count:统计这个RDD中记录数
    3.saveAsTextFile 将RDD的计算结果写入到HDFS上,或者本地磁盘
    4.collect:能够将每一个task的计算结果回收到Driver端,一般用于测试
    5.countByKey:和count的区别需要再看一下
    6.take:取出RDD中前N个元素
    7.reduce:可以将一个RDD中的数据进行聚合,聚合逻辑数由用户传入。

    相关文章

      网友评论

        本文标题:算子整理

        本文链接:https://www.haomeiwen.com/subject/wwbngxtx.html