数据岗位面试题更新 2026-08-05

请说明在 PySpark 中,如何利用 groupBy() 与 agg() 这两个方法完成数据聚合任务?

数据编码实现技术原理PySpark

考察说明

考查对 PySpark 聚合操作核心 API 的理解与使用能力。

回答思路

  1. 【回答框架 1】groupBy() 用于按一个或多个列对 DataFrame 进行分组,返回 GroupedData 对象,该对象本身不执行计算,只定义分组逻辑。
  2. 【回答框架 2】agg() 是 GroupedData 的方法,用于对分组后的数据应用一个或多个聚合函数,如 sum、avg、count、max、min 等,可传入字典或列表达式。
  3. 【回答框架 3】典型用法:df.groupBy('列名').agg({'列名':'sum'}) 或 df.groupBy('列名').agg(sum('列名').alias('总和')),支持多列和多聚合。
  4. 【回答框架 4】聚合函数也可直接作用于分组后的列,如 df.groupBy('列名').sum('数值列'),但 agg() 更灵活,可混合多种聚合。
  5. 【回答框架 5】注意分组列会作为结果列保留,聚合结果列名默认与函数相关,可通过 alias 重命名。
  6. 【关键点 1】groupBy() 返回 GroupedData,不触发计算。
  7. 【关键点 2】agg() 接受字典或列表达式,支持多聚合。
  8. 【关键点 3】聚合函数包括 sum、avg、count、max、min 等。
  9. 【关键点 4】分组列自动出现在结果中。
  10. 【关键点 5】可用 alias 自定义聚合列名。
  11. 【易错点 1】不要混淆 groupBy() 与 agg() 的调用顺序,agg() 必须作用于 GroupedData。
  12. 【易错点 2】聚合函数名与列名冲突时需使用列表达式避免歧义。
  13. 【易错点 3】对空分组或 null 值,聚合结果可能为 null,需注意处理。