【发布时间】:2018-06-07 06:22:30
【问题描述】:
我一直在使用 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。显然这两种计数方法不相等或发生了其他事情,但我试图弄清楚:原因是什么这些有什么区别?
【问题讨论】:
-
两个查询应该给出相同的结果。您能否发布示例数据,以便我们可以复制错误并进行测试?
标签: scala apache-spark apache-spark-sql