1.Python中Apache Spark中cache()
的默认持久性级别是什么
MEMORY_ONLY
MEMORY_ONLY_SER
MEMORY_AND_DISK
MEMORY_AND_DISK_SER
2。根据“ Learning Spark”这本书,persist()
的默认持久性级别为MEMORY_ONLY_SER
正确吗?
答案 0 :(得分:0)
您正在使用哪个Apache Spark版本?假设您使用的是最新版本(2.3.1):
关于Python documentation for Spark RDD Persistence documentation,当您同时调用cache()
和persist()
方法时,存储级别为MEMORY_ONLY
。
默认情况下,仅内存用于存储RDD。
此外,如果您指定要使用的Apache Spark版本或“ Learning Spark”书中引用的版本,我们可以为您提供更好的帮助。
答案 1 :(得分:0)
现在是MEMORY_ONLY。在Scala中检出源代码,但很简单:
def cache(): this.type = persist()
def persist(): this.type = persist(StorageLevel.MEMORY_ONLY)
def persist(newLevel: StorageLevel): this.type = {
// doing stuff...
}
您应使用的存储级别取决于RDD本身。例如,当您没有足够的RAM且具有MEMORY_ONLY级别时,您将丢失数据并必须从头开始重新计算。或者,如果它是MEMORY_AND_DISK,您仍将在磁盘上进行备份,并可以从硬盘上读取它。
因此,在大多数情况下,重新计算这些数据要比从磁盘读取数据快(并且在持久化时必须将其写入磁盘,这甚至更慢)。这就是为什么MEMORY_ONLY是默认值的原因。
级别的差异可以在官方指南中找到。 https://spark.apache.org/docs/latest/rdd-programming-guide.html#rdd-persistence