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]]