分享

对于Pair RDD 如何对数据进行排序?

dsy198816 发表于 2017-2-6 09:55:59 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 8825
我知道key排序用sortbykey  数据value排序用啥呢?我现在的rdd里数据如下。

(file.baixing.net,3)
(60.167.59.160,3)


host:访问次数,我就是想基于访问次数排个序

已有(4)人评论

跳转到指定楼层
hyj 发表于 2017-2-6 10:45:27
没发现直接方法,可以变通下。通过倒置,key变为value,value变为key,然后在在排序
回复

使用道具 举报

w517424787 发表于 2017-2-6 11:33:07
通过map将rdd中key-value进行互换了,这样就可以进行排序了,排序完后在通过map互换回来!
回复

使用道具 举报

dsy198816 发表于 2017-2-6 11:45:29
我解决了。。两种方法我都实现了。。
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
object WordCount {
   def main(args: Array[String]) {

     val conf = new SparkConf()
     val sc = new SparkContext(conf)
     val line = sc.textFile("mylog")

     val result1 = line.map(x => x.split("\\|")(24))
     val result2 = result1.map(x => x.split(",")(1))
     val result3 = result2.map((_,1)).reduceByKey(_+_).sortBy(_._2, false).take(10)
     /*value sort other way*/
     //val result4 = result2.map((_,1)).reduceByKey(_+_).map(x => (x._2, x._1)).sortByKey(false).take(10)
     result3.foreach(println)
     sc.stop()
   }
}
回复

使用道具 举报

ledasion 发表于 2017-2-10 17:09:31
可以使用 sortBy(x=>x._?)
?表示元素的顺序
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条