首页 > 解决方案 > 哪个操作更快:filter 或 withColumn with when?

问题描述

哪个性能更高?

  1. filter方法

    val df1 = df
      .filter('operation === true)
      .withColumn("operation2", lit(null))
    
  2. withColumn/when接近

    val df2 = df.withColumn('operation2, when('operation === true, null))
    

标签: performanceapache-sparkapache-spark-sql

解决方案


将输出中的行数放在一边(它们可能不同),我确信性能会相同(或非常可比)。原因是阶段和任务之间没有相互依赖关系,因此计算尽可能并行。它们都是仅地图计算。

为了更好地理解此查询和其他结构化查询,请使用explain或仅使用 Web UI 来查看(和比较)物理计划。


推荐阅读