Spark: группировать только часть строк в DataFrame - PullRequest
0 голосов
/ 14 октября 2019

В данном DataFrame я бы хотел сгруппировать только несколько строк и сохранить остальные строки в одном и том же кадре.

Мое текущее решение:

val aggregated = mydf.filter(col("check").equalTo("do_aggregate")).groupBy(...).agg()
val finalDF = aggregated.unionByName(mydf.filter(col("check").notEqual("do_aggregate")))

ОднакоЯ хотел бы найти более элегантный и эффективный способ.

1 Ответ

1 голос
/ 14 октября 2019

Используйте производный столбец для группировки в зависимости от проверки.

mydf.groupBy(when(col("check").equalTo("do_aggregate"), ...).otherwise(monotonically_increasing_id)).agg(...)

Если у вас есть уникальный ключ в кадре данных, используйте его вместо monotonically_increasing_id.

...