Последняя функция агрегирования в Dataframe Spark Scala - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть фрейм данных, в котором я агрегирую по столбцу и выбираю последний элемент, но он каждый раз возвращает другой результат. Есть ли способ, как я могу решить эту проблему без различий и каждый раз получить правильный.

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               |
+---+-----------------+-----------------+

Заранее спасибо.

1 Ответ

0 голосов
/ 15 апреля 2020

Если у вас большой набор данных, это может быть проблемой, попробуйте навести порядок в столбце группировки:

sourceDF.orderBy("id").groupBy("id").agg(
last("name"),
last("city")
).show(false)
...