在任务节点上使用自动缩放时,内存中持久保存的数据会发生什么情况?

What happens with data persisted in memory when using autoscaling on task nodes?

我在 Spark/Scala 中使用 AWS EMR。假设我有一个我选择保留的大型 DataFrame。 persist() 方法可能是懒惰的,但假设我在之后立即激活它,使用 .show()

df.persist()
df.show()

我的理解是保存在内存中,下次使用起来会比较快。假设自动缩放开始并将我的一半任务节点缩放回来。

如果我做一个df.select,任务节点终止后,它还能工作吗?还是那个块从终止的节点丢失了?还是持久化到核心节点?

在AWS EMR中,只有核心节点会存储数据块。任务节点仅通过从核心节点读取数据来帮助扩展计算能力。

理想情况下,每个执行器将在内存中存储数据集的几个分区,当您丢失一个执行器时,将根据对现有 executors/resources.

分区的重新分配重新计算丢失的分区。