Dataframe:如何groupBy/count然后按Scala中的count计数

HIS*_*ISI 2 scala apache-spark

我有一个包含数千行的数据框,我正在寻找的是分组并计算一个列然后按输出顺序排序:我做的是somthing看起来像:

import org.apache.spark.sql.hive.HiveContext
import sqlContext.implicits._


val objHive = new HiveContext(sc)
val df = objHive.sql("select * from db.tb")
val df_count=df.groupBy("id").count().collect()
df_count.sort($"count".asc).show()
Run Code Online (Sandbox Code Playgroud)

Sha*_*ala 7

您可以使用sortorderBy 如下

val df_count = df.groupBy("id").count()

df_count.sort(desc("count")).show(false)

df_count.orderBy($"count".desc).show(false)
Run Code Online (Sandbox Code Playgroud)

不要使用,collect()因为它将数据作为一个提供给驱动程序Array.

希望这可以帮助!

  • 我改用了这个:`df.groupBy("id").count().orderBy($"count".desc).show()` 仅在一行中 (2认同)