我一直在使用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。显然,这两种计数方法不是等价的,或者发生了其他事情,但我试图弄清楚:这两种方法之间存在差异的原因是什么?
发布于 2018-06-07 06:22:30
我猜是因为在第一个查询中,您只按2列分组,而在第二个4列中。因此,您可能只在两列上具有较少的不同组。
https://stackoverflow.com/questions/50729480
复制相似问题