Spark是否总是在动作发生时读取数据

Does Spark Always Read Data When an Action Occurs

我是 Spark 的新手,我了解到有转换和操作。转换 return 新的 rdds 和数据帧,以及对它们进行操作的操作。除非未调用操作,否则不会执行任何转换。除非请求任何操作,否则转换只是沿袭中的步骤。因此,当我读取一个数据帧时,它也是一个转换,如果我在读取后对同一个数据帧调用两个操作,它是读取两次还是只读取一次然后对它们执行操作?

df = ss.read.csv('test.csv')
df.count()
df.take(5)

一个动作通常会导致执行,如您所说。这不是操作的情况,而是实际执行的情况——除了一些需要执行的工作例外。

如果您没有缓存/持久化数据,您将多次读取数据,除非发生某些跳过的操作。

延迟执行和沿袭意味着可以优化代码。

像 take(n) 这样的东西被优化了。 show 也有特殊的考虑。