Dataframe Spark Scala中的最后一个聚合函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dataframe Spark Scala中的最后一个聚合函数相关的知识,希望对你有一定的参考价值。
[我有一个数据框,我聚集在一个列上并选择最后一个元素,但是每次都会返回不同的结果,有没有办法我可以解决这个问题,而每次都没有diff结果并获得正确的结果。
val sourceDF = Seq(
(11,"a1", "a2"),
(11,"b1", "b2"),
(22,"c1", "c2"),
(22,"d1", "d2"),
(33,"e1", "e2")
).toDF("id","name", "city")
sourceDF.show(false)
sourceDF.groupBy("id").agg(
last("name"),
last("city")
).show(false)
+---+-----------------+-----------------+
|id |last(name, false)|last(city, false)|
+---+-----------------+-----------------+
|33 |e1 |e2 |
|11 |a1 |a2 |
|22 |c1 |c2 |
+---+-----------------+-----------------+
提前感谢。
答案
如果您的数据集很大,那么可能会出现问题,请尝试为您的分组列指定顺序:
sourceDF.orderBy("id").groupBy("id").agg(
last("name"),
last("city")
).show(false)
以上是关于Dataframe Spark Scala中的最后一个聚合函数的主要内容,如果未能解决你的问题,请参考以下文章
Spark/Scala:对带有数组类型列的 DataFrame 中的某些组件的操作
如何从 Scala 中的 DataFrame 在 Spark 中创建分布式稀疏矩阵
使用 Scala 将列分配给 Spark Dataframe 中的另一列