Spark 缓存

rdd.cache(): StorageLevel(缓存级别)

1
2
3
4
5
6
7
8
9
10
11
12
13
object StorageLevel {
val NONE = new StorageLevel(false, false, false, false)
val DISK_ONLY = new StorageLevel(true, false, false, false)
val DISK_ONLY_2 = new StorageLevel(true, false, false, false, 2)
val MEMORY_ONLY = new StorageLevel(false, true, false, true)
val MEMORY_ONLY_2 = new StorageLevel(false, true, false, true, 2)
val MEMORY_ONLY_SER = new StorageLevel(false, true, false, false)
val MEMORY_ONLY_SER_2 = new StorageLevel(false, true, false, false, 2)
val MEMORY_AND_DISK = new StorageLevel(true, true, false, true)
val MEMORY_AND_DISK_2 = new StorageLevel(true, true, false, true, 2)
val MEMORY_AND_DISK_SER = new StorageLevel(true, true, false, false)
val MEMORY_AND_DISK_SER_2 = new StorageLevel(true, true, false, false, 2)
val OFF_HEAP = new StorageLevel(true, true, true, false, 1)
cache它和tranformation: lazy机制 没有遇到action是不会提交作业到spark上运行的 如果一个RDD在后续的计算中可能会被使用到,那么建议cache cache底层调用的是persist方法,传入的参数(存储级别)是:StorageLevel.MEMORY_ONLY(只存到内存中) cache底层调用persist cache=persist persist可以将StorageLevel传给spark unpersist: 立即执行的

SparkLineage机制(依赖)

自RDD的某个参数丢失/则根据依赖从父RDD创建

窄依赖:一个父RDD的partition最多多被子RDD的某个partition使用一次    

宽依赖:一个父RDD的partition会被子RDD的partition使用多次,需要有shuffle

shuffle :重新分配数据的过程(reduceByKey)

image

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2018-2020 丁振莹
  • 访问人数: | 浏览次数:

你的每一分支持,是我努力下去的最大的力量 ٩(๑❛ᴗ❛๑)۶

支付宝
微信