У меня есть следующий Dataframe, и я собираюсь агрегировать по идентификаторам, а также суммировать столбец 'value' для каждого уникального идентификатора:
import org.apache.spark.sql.functions._
import spark.implicits._
// some data...
val df = Seq(
(1, 2),
(1, 4),
(1, 1),
(2, 2),
(2, 2),
(3, 2),
(3, 1),
(3, 1)
).toDF("id","value")
df.show()
дает следующее:
+---+-----+
| id|value|
+---+-----+
| 1| 2|
| 1| 4|
| 1| 1|
| 2| 2|
| 2| 2|
| 3| 2|
| 3| 1|
| 3| 1|
+---+-----+
Используя функцию подсчета, я знаю, что могу подсчитать уникальные идентификаторы:
df.select("id").groupBy($"id").count.orderBy($"id".asc).show()
+---+-----+
| id|count|
+---+-----+
| 1| 3|
| 2| 2|
| 3| 3|
+---+-----+
, но я также хочу суммировать (или получить среднее значение) значения для каждого из уникальных идентификаторов.Таким образом, итоговая таблица должна выглядеть следующим образом:
+---+-----+----------+
| id|count|valueCount|
+---+-----+----------+
| 1| 3| 7|
| 2| 2| 4|
| 3| 3| 4|
+---+-----+----------+
Есть ли способ сделать это программно?