2017-09-06 181 views
0

(1)Spark如何决定为RDD驱逐哪个分区?RDF缓存驱逐的LRU策略如何在apache spark中工作?

(2)LRU和RDD StorageLevel之间的关系是什么? (3)如果数据源大小非常大(大于所有执行程序内存的总和),那么如何触发加载数据并创建RDD?它与LRU有关吗?

我创建了这个问题,目的是获得有关RDD LRU驱逐,StorageLevel的一些细节。

回答

1

1.默认的RDD驱逐策略是LRU。当内存空间不足以执行RDD缓存时,会移除多个分区,如果这些分区在以后再次使用,它们将由Lineage信息重现并缓存在内存中再次。 不适合在内存中缓存数据集或者溢出到磁盘或在需要时即时重新计算,由RDD的存储级别

2.I确定还没有发现有关LRU和RDD storageLevel之间的关系什么但是,如果不适合内存,可以使用不同的storageLevel来缓存数据。另外,在不同的storageLevel之间,MEMORY_AND_DISK_SER可以帮助减少GC并避免昂贵的重新计算。

3.我不这么认为,如果你运行的数据大于所有执行程序内存或集群大小的总和,那么会出现任何问题。许多操作都可以通过数据流,从而影响内存使用量是独立于输入数据大小的。在少数情况下,如果作业失败或者单个分区太大而不能适应内存,那么通常的方法就是重新分区到更多的分区,因此每个分区都比较小。希望,那么它会适合。