我有一个非常典型的RDD场景,我收集一些数据,保留它,然后多次使用持久RDD进行各种转换。持续加速一个数量级,所以坚持绝对是必要的。
但我对不同坚持方法的相对速度感到惊讶。如果我坚持使用MEMORY_AND_DISK
,则每次使用持久RDD的时间比使用MEMORY_ONLY
时长10%。这是为什么?如果数据适合内存,我原本期望它们具有相同的速度,如果某些分区不适合内存,我希望MEMORY_AND_DISK
更快。为什么我的时间始终没有表明这是真的?
答案 0 :(得分:0)
您的CPU通常以大约10 Gb / s的速度访问内存,而对SSD的访问速度则为600 Mb / s 选择MEMORY_ONLY时不适合内存的分区将使用父rdds分区重新计算。如果你没有广泛的依赖,那就没问题
答案 1 :(得分:0)
没有上下文就无法分辨,但至少有两种情况MEMORY_AND_DISK
:
MEMORY_AND_DISK
分区将存储在磁盘上。MEMORY_AND_DISK
存储在磁盘上,MEMORY_ONLY
丢失,必须重新计算,驱逐可能会触发大型GC扫描。最后,您必须记住_DISK
可以使用不同级别的硬件和软件缓存,因此可以使用与主内存相当的速度访问不同的块。