Ram*_*ana 197 distributed-computing apache-spark rdd
在RDD持久性方面,spark cache()和persist()spark 之间有什么区别?
aha*_*ars 216
使用时cache(),只使用默认存储级别MEMORY_ONLY.使用MEMORY_AND_DISK,您可以指定所需的存储级别(rdd-persistence).
来自官方文档:
- 您可以
persist()使用RDD()或persist()方法标记要保留的内容.- 每个持久化
cache可以使用不同的存储RDD- 在
storage level()方法是用于使用所述默认存储水平,这是一个速记cache(存储在反序列化存储器对象).
使用StorageLevel.MEMORY_ONLY,如果你要分配的存储级比其他persist()的MEMORY_ONLY(选择哪个存储级别)
Ram*_*ram 82
缓存或持久性是(迭代和交互式)Spark计算的优化技术.它们有助于保存临时部分结果,因此可以在后续阶段重复使用.因此,这些中间结果cache保存在内存中(默认)或更稳固的存储,如磁盘和/或复制.
persists可以使用MEMORY_ONLY操作进行缓存.它们也可以使用cache操作持久化.
persist,MEMORY_ONLY这些功能可用于调整a的存储级别
MEMORY_ONLY.释放内存时,Spark将使用存储级别标识符来决定应保留哪些分区.参数less variantsMEMORY_ONLY()和RDD()只是缩写RDD警告:更改存储级别后,无法再次更改!
仅仅因为你可以cache在内存中缓存并不意味着你应该盲目地这样做.根据访问数据集的次数以及执行此操作所涉及的工作量,重新计算可能比增加的内存压力所支付的价格更快.
不言而喻,如果你只读一个数据集,一旦没有缓存它,它实际上会使你的工作变慢.可以从Spark Shell中看到缓存数据集的大小.
列出变体......
def cache(): RDD[T]
 def persist(): RDD[T]
 def persist(newLevel: StorageLevel): RDD[T]
*见下面的例子:*
val c = sc.parallelize(List("Gnu", "Cat", "Rat", "Dog", "Gnu", "Rat"), 2)
     c.getStorageLevel
     res0: org.apache.spark.storage.StorageLevel = StorageLevel(false, false, false, false, 1)
     c.cache
     c.getStorageLevel
     res2: org.apache.spark.storage.StorageLevel = StorageLevel(false, true, false, true, 1)
persist和persist操作之间的区别纯粹是语法上的.cache是persist或persist(cache)的同义词,即RDD仅persist具有默认存储级别cache
注意:由于persist(StorageLevel.MEMORY_ONLY).s的缓存和持久性之间非常小且纯粹的语法差异,这两个术语通常可以互换使用.
在这里看得更直观....
坚持内存和磁盘:
缓存可以在很大程度上提高应用程序的性能.
Mik*_*ark 48
没有区别.来自RDD.scala.
/** Persist this RDD with the default storage level (`MEMORY_ONLY`). */
def persist(): this.type = persist(StorageLevel.MEMORY_ONLY)
/** Persist this RDD with the default storage level (`MEMORY_ONLY`). */
def cache(): this.type = persist()
ket*_*nkk 23
Spark提供5种类型的存储级别
MEMORY_ONLYMEMORY_ONLY_SERMEMORY_AND_DISKMEMORY_AND_DISK_SERDISK_ONLYcache()会用的MEMORY_ONLY.如果您想使用其他东西,请使用persist(StorageLevel.<*type*>).
默认情况下,persist()将数据作为未序列化的对象存储在JVM堆中.
小智 6
Cache() 和persist() 这两个方法都用于提高spark 计算的性能。这些方法有助于保存中间结果,以便在后续阶段重复使用。
cache() 和persist() 的唯一区别是,使用Cache 技术,我们可以仅在需要时将中间结果保存在内存中,而在Persist() 中,我们可以将中间结果保存在5 个存储级别(MEMORY_ONLY、MEMORY_AND_DISK、MEMORY_ONLY_SER、MEMORY_AND_DISK_SER, DISK_ONLY)。
对于不耐烦的人:
\n不传递参数,persist()和cache()是相同的,具有默认设置:
RDD:MEMORY_ONLYDataset:MEMORY_AND_DISK与 不同的是cache(),persist()允许您在括号内传递参数,以指定级别:
persist(MEMORY_ONLY)persist(MEMORY_ONLY_SER)persist(MEMORY_AND_DISK)persist(MEMORY_AND_DISK_SER )persist(DISK_ONLY )瞧\xc3\xa0!
\n| 归档时间: | 
 | 
| 查看次数: | 87722 次 | 
| 最近记录: |