groupBy和sum spark DF的时间与总和的数量成比例增加?

时间:2018-04-16 15:22:19

标签: scala apache-spark

df.groupBy("c1").agg(sum("n1")).distinct.count()

需要10秒

df.groupBy("c1").agg(sum("n1"), sum("n2")).distinct.count()

需要20秒

自DF行存储以来,我感到很惊讶。你有相同的经历吗?这有什么意义?还有想法如何使2个总和在更相似的时间内运行到1个总和? spark 2.2.0

2 个答案:

答案 0 :(得分:0)

我不认为" agg"在第二种情况下花费更多的时间。我会看清楚。

您正在执行基于额外列 n2 distinct ,这会提供更广泛的分发并增加不同计算的复杂性。

答案 1 :(得分:0)

这很有道理:

  • 您可以增加两倍的计算次数。
  • 您将洗牌大小增加约50%。

这两项变化都会影响整体表现,即使最终结果很小,对不同的影响可以忽略不计。