[Sparkアプリケーション]--パケット取得topNを実現

1207 ワード

一、テキストフォーマット
class1 90
class2 56
class1 87
class1 76
class2 88
class1 95
class1 74
class2 87
class2 67
class2 77

二、直接コードを献上する
package com.scala



import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
/**
 * scala   groupTopN
 */
object GroupTopN {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("groupByTopN").setMaster("local[1]")
    //  context
    val sc = new SparkContext(conf)
    //     RDD
    val scores = sc.textFile("score.txt", 1)
    //    kv  ,      
    val scoresMap = scores.map(x => {
      val al = x.split(" ")
      (al(0), al(1).toInt)
    })
    //  
     val paris=scoresMap.groupByKey()
     //sort    
     val result=paris.map(x=>(x._1,x._2.toList.sorted(Ordering.Int.reverse)))
        //    
     result.foreach(x =>{
       println("01 "+x._1)
       //     
       println("02 "+x._2.slice(x._2.length-4, x._2.length))

       })

//     :     

//     println(res)
//     def res():Any=result.foreach(x=>{
//       (x._1,x._2.toList.sorted)
////       var lists2=List(2)//      
////       for(score