我正在将AWS EMR与Spark / Scala结合使用。假设我有一个选择保留的大型DataFrame。 persist()方法可能很懒,但是假设我之后立即使用.show()激活了它。
df.persist()
df.show()
我的理解是它将其存储在内存中,因此下一次使用起来更快。假设自动缩放开始,将一半的任务节点缩小。
如果我执行df.select
,则在终止任务节点后,它仍然可以工作吗?还是该块从终止的节点中丢失了?还是持久化到核心节点?
答案 0 :(得分:1)
在AWS EMR中,只有核心节点将存储数据块。任务节点只能通过从核心节点读取数据来帮助扩大计算能力。
理想情况下,每个执行器都会在内存中存储数据集的几个分区,当您丢失一个执行器时,丢失的分区将根据将分区重新分配给现有执行器/资源来重新计算。