Spark GroupBy MapValues

1、groupBy,是分组,分组后原来的值变成map(key,value)中的value,会多加个key,原来相同的key会一股脑全打入到value中

2、mapvalues,key不变,values被拿出来处理

看例子

package scalapackage.testspark

/**
  * Created by Germmy on 2018/5/12.
  */
object TestGroupBy {

  def main(args: Array[String]) {

    val list=List(("scala",1),("java",1),("python",2),("java",3),("scala",4),("php",4))

    //下面按照key分组,相同的value将被合在一起,不会丢失
    val groupByed: Map[String, List[(String, Int)]] = list.groupBy(_._1)

    println("groupByed:"+groupByed)

    //mapvalues-方法1
    val sumed: Map[String, Int] = groupByed.mapValues(_.map(_._2).sum)
    println(""+sumed)

    //sortBy-本质上和map一样,也是会逐个遍历的
    val sortedVal: Map[String, List[(String, Int)]] = groupByed.mapValues(_.sortBy(_._2).reverse)
    println(sortedVal)
  }

}

结果如下:

猜你喜欢

转载自my.oschina.net/windows20/blog/1811429
今日推荐