如何在scala数据集中的特定列中找到最频繁的值?
例如,如果其中一列是这样的:
西雅图
巴塞罗那
里斯本
巴塞罗那
蒙特利尔
巴塞罗那
里斯本
结果我将需要获取“巴塞罗那”。
答案 0 :(得分:1)
如果您正在寻找基于Spark的解决方案,则与Jack Koenig's answer类似,只是使用Spark函数而不是Scala函数:
val df = List(
"Seattle",
"Barcelona",
"Lisbon",
"Barcelona",
"Montreal",
"Barcelona",
"Lisbon"
).toDF("city")
val max = df
.groupBy("city")
.count()
.sort(desc("count"))
.head()
.getString(0)
答案 1 :(得分:0)
将C.S. Reddy的评论变成完整的答案:
Scastie链接:https://scastie.scala-lang.org/5GIgNMJGTuCVDYrsBa33eg
val xs = List(
"Seattle",
"Barcelona",
"Lisbon",
"Barcelona",
"Montreal",
"Barcelona",
"Lisbon"
)
val result =
xs.groupBy(x => x)
.map { case (k, v) => k -> v.size }
.maxBy(_._2)
._1
println(result)
// Barcelona