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

时间:2019-08-01 21:52:45

标签: scala apache-spark amazon-emr autoscaling

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

df.persist()
df.show()

我的理解是它将其存储在内存中,因此下一次使用起来更快。假设自动缩放开始,将一半的任务节点缩小。

如果我执行df.select,则在终止任务节点后,它仍然可以工作吗?还是该块从终止的节点中丢失了?还是持久化到核心节点?

1 个答案:

答案 0 :(得分:1)

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

理想情况下,每个执行器都会在内存中存储数据集的几个分区,当您丢失一个执行器时,丢失的分区将根据将分区重新分配给现有执行器/资源来重新计算。