斯卡拉火花:Foldleft评估转换缓慢吗?

时间:2020-03-06 00:52:37

标签: scala apache-spark databricks

我一直在注意一些事情,并希望对此做一个解释(或至少是确认)。

我的公司有一个共同的模式,即为了对DataFrame的所有列做某事,我们要做

colList.foldleft(df)({case(df_, colName) => df_.withColumn...})

这通常可以正常工作,但是我发现如果在DataFrame上使用一堆列和一个复杂的上游时,它的运行速度很慢。有趣的是,它甚至在执行操作之前就很慢。一个非超长的转换序列可能需要4到14分钟才能完成评估。

如果我重新编写要使用的相同代码 df.select(df.columns.map(c => ....)),相同的代码大约需要2秒钟。在任何一个上调用.explain()都会产生相同的输出。

有人可以解释吗?

0 个答案:

没有答案