Разница между этими двумя методами подсчета в Spark - PullRequest
0 голосов
/ 06 июня 2018

Я делал подсчет "игр", используя spark-sql.Первый способ выглядит так:

val gamesByVersion = dataframe.groupBy("game_version", "server").count().withColumnRenamed("count", "patch_games")

val games_count1 = gamesByVersion.where($"game_version" === 1 && $"server" === 1)

Второй выглядит следующим образом:

val gamesDf = dataframe.
  groupBy($"hero_id", $"position", $"game_version", $"server").count().
  withColumnRenamed("count", "hero_games")

val games_count2 = gamesDf.where($"game_version" === 1 && $"server" === 1).agg(sum("hero_games"))

Для всех намерений и целей dataframe имеет только столбцы hero_id, position, game_version и server.

Однако games_count1 заканчивается примерно 10, а games_count2 заканчивается 50. Очевидно, что эти два метода подсчета не эквивалентны или что-то еще происходит, ноЯ пытаюсь понять: в чем причина этих различий?

1 Ответ

0 голосов
/ 07 июня 2018

Я думаю, потому что в первом запросе вы группируете только по 2 столбцам, а во втором - по 4 столбцам.Поэтому у вас могут быть менее четкие группы только по двум столбцам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...