Spark 分组聚合转Map 的方式

Spark DateFrame分组聚合转Map 的方式

比如按照年龄分组 把相同分组的人名聚合在一列

方法一:DateFrame自带函数

  import org.apache.spark.sql.functions._
  var a = collection_cache.groupBy("age").agg(collect_list("name").as("name"))
    var b: mutable.Map[String, String] = a.rdd.map(row => row.getAs("age").toString -> row.getAs("name").toString).
      collectAsMap().asInstanceOf[mutable.HashMap[String, String]]

方法二:使用算子转换

 var c=collection_cache.rdd.map(row => row.getAs("age").toString -> row.getAs("name").toString)
   .groupByKey().map(x=>{(x._1 -> x._2.toList)}).collectAsMap().asInstanceOf[mutable.HashMap[String, String]]
原文地址:https://www.cnblogs.com/successok/p/14737318.html