Набор данных Spark - Средняя функция - PullRequest
0 голосов
/ 03 октября 2018

Я использую Spark со Scala и пытаюсь найти лучший способ сгруппировать Dataset по ключу и получить среднюю + сумму вместе.

Например,

  • У меня есть Dataset[Player], а Player состоит из: playerId, yearSignup, level, points.
  • Я хочу сгруппировать этонабор данных по yearSignup и для расчета за каждый год: сумма баллов и средний уровень.
  • Итак, с groupByKey(p=>p.yearSignup) и reduceGroups(p1,p2) я могу получить сумму очков: (p1.points ++ p2.points) с reduceLeft.

Но как получить средний уровень?Должен ли я сначала подвести итог, а затем снова эту группу и разделить?Или есть другой способ сделать это вместе.

1 Ответ

0 голосов
/ 03 октября 2018

После того, как вы groupby, вы можете использовать .agg для sum и avg.( см. Документы )

import org.apache.spark.sql.functions._

Player
  .groupBy($"yearSignup")
  .agg(
    avg($"level").as("avg_level")
    sum($"points").as("total_points")
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...