当前位置: 首页 > 知识库问答 >
问题:

Spark中这两种计数方法的区别

商鸿哲
2023-03-14

我一直在用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\u idpositiongame\u versionserver列。

然而games_count1最终大约是10,而games_count2最终是50,显然这两种计数方法并不等同或有其他原因,但我正在试图弄清楚:这些之间的差异是什么原因?

共有1个答案

常英资
2023-03-14

我猜是因为在第一个查询中,您只按2列分组,在第二个4列中分组。因此,两列上的组可能不那么明显。

 类似资料:
  • 问题内容: 考虑我们有两个表,和。是表中的外键,并且是表中的主键。 这两个SQL查询之间有什么区别? 与 问题答案: 除语法外,对于小片段,它们的工作原理完全相同。但是,如果有可能,请始终使用ANSI-JOIN编写新查询。 至于语义上,逗号用于在两个表之间生成CARTESIAN乘积,这意味着生成表A中的所有记录与表B中的所有记录的矩阵,因此具有4和6条记录的两个表分别生成24个记录。然后,使用WH

  • 我想尝试将以下两种方法合二为一: 第一个方法构造一个映射,其中键是<code>String</code>,值是<code<ArrayList</code>。 我想尝试添加第二条信息,即简单的错误消息(方法2)。HashMap不够复杂,无法保存这些信息,但我喜欢它只接受唯一值的方式,而且很容易迭代和传递。 任何建议非常感谢:)

  • 本文向大家介绍JS中string的startwith和indexof两种方法的区别?相关面试题,主要包含被问及JS中string的startwith和indexof两种方法的区别?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: JS中startwith函数,其参数有3个,stringObj,要搜索的字符串对象,str,搜索的字符串,position,可选,从哪个位置开始搜索,如果以posi

  • 问题内容: 在Java中,我可以通过以下方式初始化具有预定义内容的数组: 或通过: 本质上,这两种方式之间有什么区别吗?它们在Java中是否完全相同?哪种方法更好,为什么呢? 问题答案: 就您而言,没有区别。 当您不将变量分配给变量并进行内联创建时,将会有所 不同。 例如,考虑有一个方法,它以数组作为参数。 您的情况: 现在在其他情况下调用它时可以看到区别。

  • 下面是一些React/JS代码:有区别吗: 和 非常感谢