You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark查找重复数据:临时视图SQL vs DataFrame聚合,哪种更高效?

Spark查找DataFrame重复数据:两种方案的效率对比

结论

两种方案的性能几乎完全一致,不存在明显的效率差异。

原因分析

Spark的核心优化引擎Catalyst会对所有查询(不管是SQL语句还是DataFrame API调用)进行统一的解析、优化和执行计划生成:

  • 你提供的两种写法,本质逻辑完全相同:按指定key列分组 → 统计每组行数 → 过滤出行数大于1的组 → 统计这些组的数量。
  • 不管是通过临时视图写SQL,还是直接用DataFrame的groupBy/agg/filter链式调用,最终都会被Catalyst转换成完全一致的物理执行计划。你可以通过在两个查询末尾调用explain()来验证,会看到两者的执行计划完全一样。

注意:修正选项2的代码错误

你给出的选项2代码存在语法问题,正确的写法应该是:

df.groupBy("keycol")
  .agg(count("keycol").alias("new_col")) // alias需加在agg函数内部
  .filter("new_col > 1")
  .count()

原代码中alias("new_col")的位置错误,会导致后续过滤无法找到对应的列名。

内容的提问来源于stack exchange,提问作者kartheek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:32:04