scala中数据集中最频繁的值

scala中数据集中最频繁的值,scala,apache-spark,Scala,Apache Spark,如何在scala数据集中的特定列中找到最频繁的值 例如,如果其中一列如下所示: 西雅图巴塞罗那里斯本巴塞罗那蒙特利尔巴塞罗那里斯本 因此,我需要得到“巴塞罗那”。将C.S.Reddy的评论转化为一个完整的答案: Scastie链接: val xs=List( “西雅图”, “巴塞罗那”, “里斯本”, “巴塞罗那”, “蒙特利尔”, “巴塞罗那”, “里斯本” ) val结果= xs.groupBy(x=>x) .map{case(k,v)=>k->v.size} .maxBy(u.u 2) .

如何在scala数据集中的特定列中找到最频繁的值

例如,如果其中一列如下所示:

西雅图
巴塞罗那
里斯本
巴塞罗那
蒙特利尔
巴塞罗那
里斯本


因此,我需要得到“巴塞罗那”。

将C.S.Reddy的评论转化为一个完整的答案:

Scastie链接:

val xs=List(
“西雅图”,
“巴塞罗那”,
“里斯本”,
“巴塞罗那”,
“蒙特利尔”,
“巴塞罗那”,
“里斯本”
)
val结果=
xs.groupBy(x=>x)
.map{case(k,v)=>k->v.size}
.maxBy(u.u 2)
._1
println(结果)
//巴塞罗那

如果您正在寻找基于Spark的解决方案,这与使用Spark函数而不是Scala函数的想法相同:

val df=List(
“西雅图”,
“巴塞罗那”,
“里斯本”,
“巴塞罗那”,
“蒙特利尔”,
“巴塞罗那”,
“里斯本”
).toDF(“城市”)
val max=df
.groupBy(“城市”)
.count()
.sort(描述(“计数”))
.head()
.getString(0)

do groupBy,聚合计数并查找最大值(计数)。