Memory apachespark-内存管理
因此,假设我有一个具有100GB内存的集群供spark使用。我得到了一个2000 GB的数据集,并希望为此数据集运行一个迭代应用程序。200次迭代 我的问题是,在使用.cache()时,spark会在内存中保留前100 GB,并在自动读取下一个100 GB之前执行200次迭代吗Memory apachespark-内存管理,memory,apache-spark,ram,Memory,Apache Spark,Ram,因此,假设我有一个具有100GB内存的集群供spark使用。我得到了一个2000 GB的数据集,并希望为此数据集运行一个迭代应用程序。200次迭代 我的问题是,在使用.cache()时,spark会在内存中保留前100 GB,并在自动读取下一个100 GB之前执行200次迭代吗 在内存限制范围内工作时,spark的优势非常明显,但在处理较大的数据集时,我不完全确定spark和Thread如何管理数据。这不是您将看到的行为。Spark的缓存是使用LRU逐出完成的,因此,如果缓存的数据集太大而无法存
在内存限制范围内工作时,spark的优势非常明显,但在处理较大的数据集时,我不完全确定spark和Thread如何管理数据。这不是您将看到的行为。Spark的缓存是使用LRU逐出完成的,因此,如果缓存的数据集太大而无法存储,则只有最近使用的部分才会保留在内存中。不过,spark也有一种内存和磁盘持久化模式(在中有详细介绍),听起来很适合您的情况。谢谢。所以当使用.persist()和MEMORY_和_DISK参数时,spark必须在每次迭代后从磁盘读取数据?这样做的好处是RDD不会在每次迭代后使用沿袭重新计算,对吗?这就是想法。通常,从本地磁盘读取数据要比重新计算数据快。