gpt4 book ai didi

apache-spark - 如何强制Spark内联评估DataFrame操作

转载 作者:行者123 更新时间:2023-12-03 16:08:42 25 4
gpt4 key购买 nike

根据Spark RDD docs:

All transformations in Spark are lazy, in that they do not compute their results right away...This design enables Spark to run more efficiently.



有时我需要在此时此刻对数据帧执行某些操作。但是由于数据帧操作是“ 懒惰地评估的”(按上述方法),所以当我在代码中编写这些操作时,几乎无法保证Spark会实际上与其余代码内联地执行这些操作。例如:
val someDataFrame : DataFrame = getSomehow()
val someOtherDataFrame : DataFrame = getSomehowAlso()
// Do some stuff with 'someDataFrame' and 'someOtherDataFrame'

// Now we need to do a union RIGHT HERE AND NOW, because
// the next few lines of code require the union to have
// already taken place!
val unionDataFrame : DataFrame = someDataFrame.unionAll(someOtherDataFrame)

// Now do some stuff with 'unionDataFrame'...

因此,到目前为止(到目前为止),我的解决方法是在对时间敏感的数据帧操作之后立即运行 .show() .count() ,如下所示:
val someDataFrame : DataFrame = getSomehow()
val someOtherDataFrame : DataFrame = getSomehowAlso()
// Do some stuff with 'someDataFrame' and 'someOtherDataFrame'

val unionDataFrame : DataFrame = someDataFrame.unionAll(someOtherDataFrame)
unionDataFrame.count() // Forces the union to execute/compute

// Now do some stuff with 'unionDataFrame'...

... 强制 Spark在那儿内联地立即执行数据框操作。

对我来说,这真是太笨拙了。所以我问: 是否有一种更普遍接受和/或更有效的方法来强制数据帧操作按需发生(而不是懒惰地进行评估)?

最佳答案

没有

您必须调用一个 Action 来强制Spark进行实际工作。转换不会触发这种效果,这就是喜欢的原因之一。

顺便说一句,我非常确定非常了解何时必须“现在和现在”执行某项操作,因此您可能正在关注错误的地方。

Can you just confirm that count() and show() are considered "actions"



您可以在 documentation(其中列出了 count())中看到一些Spark的 Action 功能。 show()不是,并且我以前没有使用过,但是感觉像是一个 Action -如何在不进行实际工作的情况下显示结果? :)

Are you insinuating that Spark would automatically pick up on that, and do the union (just in time)?



是的! :)

会记住您已调用的转换,并且当一个 Action 出现时,它将在正确的时间进行转换!

需要记住的一点:由于这项政策,只有在出现 Action 时才进行实际工作,直到 Action 发生,您才会看到转换中存在的逻辑错误!

关于apache-spark - 如何强制Spark内联评估DataFrame操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39380923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com