zoukankan      html  css  js  c++  java
  • spark sortBy&&sortByKey

    sortByKey和sortBy都是transforamation算子;

    sortByKey   源码如下:

      def sortByKey(ascending: Boolean = true, numPartitions: Int = self.partitions.length)
          : RDD[(K, V)] = self.withScope
      {
        val part = new RangePartitioner(numPartitions, self, ascending)
        new ShuffledRDD[K, V, V](self, part)
          .setKeyOrdering(if (ascending) ordering else ordering.reverse)
      }

    参数一:ascending 默认是True正序排列

    参数二:分区数

    即可以对标准RDD进行排序,也可以按照指定指定键值对pair Rdd进行排序

    sortBy   源码如下

    def sortBy[K](
          f: (T) => K,
          ascending: Boolean = true,
          numPartitions: Int = this.partitions.length)
          (implicit ord: Ordering[K], ctag: ClassTag[K]): RDD[T] = withScope {
        this.keyBy[K](f)
            .sortByKey(ascending, numPartitions)
            .values
      }

    参数一: 输入一个匿名函数,匿名函数的返回值是排序的关键字

    参数二:ascending 默认是True正序排列

    参数三:分区数

    案例对wordcount结果进行排序

    数据

    hadoop hadoop hadoop
    spark spark spark spark spark
    hadoop hadoop hadoop
    spark spark spark spark spark
    hive hive hive hive
    hadoop hadoop hadoop
    spark spark spark spark spark
    hadoop hadoop hadoop
    spark spark spark spark spark
    apache apache apache apache
    hadoop hadoop hadoop
    spark spark spark spark spark
    hive hive hive hive
    hadoop hadoop hadoop
    spark spark spark spark spark
    apache apache apache apache

    sortByKey

    val data:RDD[String]=spark.sparkContext.textFile(datapath,2)
    data.flatMap(x=>x.split(" ")).map((_,1)).reduceByKey(_+_).sortByKey(false).collect.foreach(println(_))

    sortBykey

    val data:RDD[String]=spark.sparkContext.textFile(datapath,2)
    data.flatMap(x=>x.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(x=>x._1,false).collect.foreach(println(_))

    结果

    (spark,30)
    (hive,8)
    (hadoop,18)
    (apache,8)
  • 相关阅读:
    稳定性「三十六计」- 无状态化
    设置默认的超时和重试是一个基础设施的基本素养
    「前任的50种死法」开发踩坑案例--慢就是错
    稳定性「三十六计」- 配额管控
    编写代码的「八荣八耻」- 以开关上线为荣,以自信编码为耻
    Kubernetes的DaemonSet(下篇)
    使用Elasticsearch的动态索引和索引优化
    Kubernetes的DaemonSet(上篇)
    程序媛的人生观
    Kubernetes的污点和容忍(下篇)
  • 原文地址:https://www.cnblogs.com/students/p/14230930.html
Copyright © 2011-2022 走看看