【赵渝强老师】Spark RDD的缓存机制

打印 上一主题 下一主题

主题 900|帖子 900|积分 2700


Spark RDD通过persist方法或cache方法可以将盘算效果的缓存,但是并不是这两个方法被调用时立刻缓存,而是触发后面的action时,该RDD才会被缓存在盘算节点的内存中并供后面重用。下面是persist方法或cache方法的函数定义:
  1. def persist(): this.type = persist(StorageLevel.MEMORY_ONLY)
  2. def cache(): this.type = persist()
复制代码
视频解说如下                 【赵渝强老师】Spark RDD的缓存机制
      通过函数的定义发现,cache最终也是调用了persist方法,默认的存储级别都是仅在内存存储一份,Spark在object StorageLevel中定义了缓存的存储级别。下面是在StorageLevel中的定义的缓存级别。
  1. val NONE = new StorageLevel(false, false, false, false)
  2. val DISK_ONLY = new StorageLevel(true, false, false, false)
  3. val DISK_ONLY_2 = new StorageLevel(true, false, false, false, 2)
  4. val MEMORY_ONLY = new StorageLevel(false, true, false, true)
  5. val MEMORY_ONLY_2 = new StorageLevel(false, true, false, true, 2)
  6. val MEMORY_ONLY_SER = new StorageLevel(false, true, false, false)
  7. val MEMORY_ONLY_SER_2 = new StorageLevel(false, true, false, false, 2)
  8. val MEMORY_AND_DISK = new StorageLevel(true, true, false, true)
  9. val MEMORY_AND_DISK_2 = new StorageLevel(true, true, false, true, 2)
  10. val MEMORY_AND_DISK_SER = new StorageLevel(true, true, false, false)
  11. val MEMORY_AND_DISK_SER_2=new StorageLevel(true, true, false, false, 2)
  12. valOFF_HEAP = new StorageLevel(true, true, true, false, 1)
复制代码
  需要阐明的是,使用RDD的缓存机制,数据可能丢失;或者会由于内存的不敷而造成数据被删除。可以通过使用RDD的查抄点机制了包管缓存的容错,纵然缓存丢失了也能包管盘算的正确执行。
  下面是使用RDD缓存机制的一个示例。这里使用RDD读取一个大的文件,该文件中包罗918843条记录。通过Spark Web Console可以对比出在不使用缓存和使用缓存时,执行效率的差异。
(1)读取一个大文件。
  1. scala> val rdd1 = sc.textFile("/root/temp/sales")
复制代码
(2)触发一个盘算,这里没有使用缓存。
  1. scala> rdd1.count
复制代码
(3)调用cache方法标识该RDD可以被缓存。
  1. scala> rdd1.cache
复制代码
(4)第二次触发盘算,盘算完成后会将效果缓存。
  1. scala> rdd1.count
复制代码
(5)第三次触发盘算,这里会直接从之前的缓存中获取效果。
  1. scala> rdd1.count
复制代码
(6)访问Spark的Web Console观察这三次count盘算的执行时间,可以当作末了一次count盘算只耗费了98ms,如下图所示。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

傲渊山岳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表