用scala 实现top N 排名

object TopNApp {
  def  main (args: Array[String]) {
    if (args != 3) {
      System.err.println("usage: <flag> <inputpath> <outputpath>")
      System.exit(1)

      //应用类型
      val flag = args(0)
      //获得上下文内容
      val sc = new SparkContext
      //hdfsduqu 数据
      val datas = sc.textFile(args(1))
      val cache = datas.cache()

      //排序
      cache.filter(_.split('\t').length == 4).filter(_.split('\t')(0) == flag).map(_.split('\t')(1) -> 1)
        .reduceByKey(_ + _).map(x => (x._2, x._1)).sortByKey(false).map(y => (y._2, y._1)).saveAsTextFile(args(2))
      map((_, 1))
    }
  }
}

 

posted @ 2015-11-21 17:15  zhanggl  阅读(1161)  评论(0编辑  收藏  举报