无rdd的,优点是不易内存溢出,缺点是只支持count、sum、max等groupby后操作
df.select("the_key")
.groupBy("the_key").count()
.toDF("the_key", "the_count")
有rdd的,缺点是容易内存溢出,优点是可以进行groupby后每个group里的自定义操作
df.rdd.groupBy(row => row.getAs[String]("the_key")).map(pair => {
val the_key = pair._1
(the_key, pair._2.size)
}).toDF("the_key", "the_count")