首页 > 数据库 > mysql教程 > 在 Spark DataFrame 中分组时如何保留其他列?

在 Spark DataFrame 中分组时如何保留其他列?

Barbara Streisand
发布: 2024-12-21 01:01:09
原创
471 人浏览过

How Can I Keep Other Columns When Grouping in a Spark DataFrame?

在 Spark DataFrame 中分组时保留其他列

在执行 DataFrame groupby 操作时,经常会遇到只接收分组的问题列和聚合值。如果您需要保留原始 DataFrame 中的其他列,这可能会很不方便。

例如,考虑以下分组:

df.groupBy(df("age")).agg(Map("id" -> "count"))
登录后复制

这将返回一个仅包含“age”的 DataFrame和“计数(id)”列。但是,如果原始 DataFrame 中存在“name”和其他列,您可能希望将它们包含在结果中。

在标准 SQL 中,可以使用以下查询来实现:

select name, age, count(id) from df group by age
登录后复制

要在 Spark 中复制此行为,您可以将聚合结果与原始表连接起来。连接的关键列应与 groupby 列相同。

这是使用 Spark SQL 的示例:

val groupedDf = df.groupBy($"age").agg(count($"id").as("count"))
val joinedDf = df.join(groupedDf, Seq("age"), "left")
登录后复制

joinedDf 现在将包含所有原始列以及聚合的“计数”列。

另一种方法是使用任意聚合(例如第一个或最后一个)来包含其他列。例如:

val groupedDf = df.groupBy($"age").agg(first($"name").as("name"), count($"id").as("count"))
登录后复制

这将确保“name”列保留在聚合的 DataFrame 中。

虽然这些方法允许您在分组期间检索其他列,但请务必注意此类查询通常没有明确定义,并且可能在不同系统中表现出不同的行为。

以上是在 Spark DataFrame 中分组时如何保留其他列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板