spark----高级功能--> cache/persist checkpoint 广播变量

 cache / persist (效率高)

cache / persist :cache, persist使用场景: 一个application多次触发Action,为了复用前面RDD计算好的数据,避免反复读取HDFS(数据源) 中的数据和重复计算

                           可以将数据缓存到内存或磁盘[executor所在的磁盘],第一次触发Action才放入到内存或磁盘,以后再触发Action会读取缓存的RDD数据再进行操作并且复用缓存的数据

                           一个RDD多次触发缓存才有意义

                           如果将数据缓存到内存, 内存不够, 以分区为单位, 只缓存部分分区的数据

                           支持多种StorageLevel, 可以将数据序列化, 默认放入内存使用的是java对象存储,但是占用空间大, 优点速度快, 也可以使用其他的序列化方式

                           cache底层调用的是persist方法, 可以指定其他存储级别

                           cache和persist方法, 严格来说, 不是Transformation, 因为没有生成新的RDD,只是标记当前rdd要cache或persist

                           原始的数据, 经过整理过滤后再进行cache或persist效果更佳

                           生产环境建议使用kryo 作为默认的序列化器, 如果要cache或persist, 建议使用 MEMORY_AND_DISK_SER

persist  实现序列化(减小空间的占用,指定存储位置)  网站: spark.apache.org -->   

scala> sc.getConf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")    //设置序列化器
res17: org.apache.spark.SparkConf = org.apache.spark.SparkConf@3adcdbc0

scala> import org.apache.spark.storage.StorageLevel                                                    //导包
import org.apache.spark.storage.StorageLevel 

scala> val rdd1 = sc.textFile("hdfs://linux01:8020/wc/part-00000")
rdd1: org.apache.spark.rdd.RDD[String] = hdfs://linux01:8020/wc/part-00000 MapPartitionsRDD[27] at textFile at <console>:29

scala> rdd1.persist(StorageLevel.MEMORY_ONLY_SER)                                              //是否序列化以及存储的位置
res18: rdd1.type = hdfs://linux01:8020/wc/part-00000 MapPartitionsRDD[27] at textFile at <console>:29

scala> rdd1.count
res19: Long = 1

scala> rdd1.unpersist(true)        // true为不阻塞   默认false(阻塞)   默认unpersist异步的

res20: rdd1.type = hdfs://linux01:8020/wc/part-00000 MapPartitionsRDD[27] at textFile at <console>:29

ID RDD Name Storage Level Cached Partitions Fraction Cached Size in Memory Size on Disk
17 hdfs://linux01:8020/wc/part-00000 Memory Deserialized 1x Replicated 3 100% 112.0 B 0.0 B
19 hdfs://linux01:8020/wc/part-00000 Memory Deseria
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值