Apache spark 如何对RDD.takeOrdered()进行反向排序?

Apache spark 如何对RDD.takeOrdered()进行反向排序?,apache-spark,rdd,Apache Spark,Rdd,Spark中RDD的takeOrdered()方法的反转顺序的语法是什么 对于奖励积分,Spark中RDD的自定义排序语法是什么?反向排序 val seq = Seq(3,9,2,3,5,4) val rdd = sc.parallelize(seq,2) rdd.takeOrdered(2)(Ordering[Int].reverse) rdd3.takeOrdered(3)(Ordering[Int].reverse.on(x=>x._2)) rdd3.takeOrdered(3)

Spark中RDD的takeOrdered()方法的反转顺序的语法是什么


对于奖励积分,Spark中RDD的自定义排序语法是什么?

反向排序

val seq = Seq(3,9,2,3,5,4)
val rdd = sc.parallelize(seq,2)
rdd.takeOrdered(2)(Ordering[Int].reverse)
rdd3.takeOrdered(3)(Ordering[Int].reverse.on(x=>x._2))
rdd3.takeOrdered(3)(Ordering[Int].on(x=>x._2))
结果将是数组(9,5)

定制订单

val seq = Seq(3,9,2,3,5,4)
val rdd = sc.parallelize(seq,2)
rdd.takeOrdered(2)(Ordering[Int].reverse)
rdd3.takeOrdered(3)(Ordering[Int].reverse.on(x=>x._2))
rdd3.takeOrdered(3)(Ordering[Int].on(x=>x._2))
我们将按年龄对人进行分类

case class Person(name:String, age:Int)
val people = Array(Person("bob", 30), Person("ann", 32), Person("carl", 19))
val rdd = sc.parallelize(people,2)
rdd.takeOrdered(1)(Ordering[Int].reverse.on(x=>x.age))
结果将是数组(Person(ann,32))

//逆序(降序)

输出:

res0: Array[(String, Int)] = Array((Hadoop,5), (PIG,3), (Hive,2))
//升序

val seq = Seq(3,9,2,3,5,4)
val rdd = sc.parallelize(seq,2)
rdd.takeOrdered(2)(Ordering[Int].reverse)
rdd3.takeOrdered(3)(Ordering[Int].reverse.on(x=>x._2))
rdd3.takeOrdered(3)(Ordering[Int].on(x=>x._2))
输出:

res0: Array[(String, Int)] = Array((Hadoop,5), (PIG,3), (Hive,2))

对于K,V对的字数类型问题。如果您想从您的订购列表中获得最后10个-

SparkContext().parallelize(wordCounts.takeOrdered(10, lambda pair: -pair[1]))

要进行升序排序,我们需要执行>>>rdd.takeOrdered(2)或>>>rdd.takeOrdered(2)(排序[Int])。默认情况下,它按升序排序。而是通过使用top(2)命令进行更优化的操作。用于在升序>>>rdd中进行自定义排序。takeOrdered(1)(排序[Int].on(x=>x.age)).foreach(println)。。。用于对对象的字符串字段进行自定义排序>>>rdd.takeOrdered(1)(排序[String].on(x=>x.name)).foreach(println)