首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spark中两种计数方法的差异

Spark中两种计数方法的差异
EN

Stack Overflow用户
提问于 2018-06-07 04:57:30
回答 1查看 155关注 0票数 0

我一直在使用spark-sql统计“游戏”的数量。第一种方式如下:

代码语言:javascript
复制
val gamesByVersion = dataframe.groupBy("game_version", "server").count().withColumnRenamed("count", "patch_games")

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

第二个是这样的:

代码语言:javascript
复制
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_idpositiongame_versionserver列。

然而,games_count1最终大约是10,而games_count2最终是50。显然,这两种计数方法不是等价的,或者发生了其他事情,但我试图弄清楚:这两种方法之间存在差异的原因是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-06-07 06:22:30

我猜是因为在第一个查询中,您只按2列分组,而在第二个4列中。因此,您可能只在两列上具有较少的不同组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50729480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档