Spark-RDD的持久化和RDD-Checkpoint机制

2022-06-09  本文已影响0人  Eqo

1_RDD持久化

在实际开发中某些RDD的计算或转换可能会比较耗费时间,如果这些RDD后续还会频繁的被使用到,那么可以将这些RDD进行持久化/缓存,这样下次再使用到的时候就不用再重新计算了,提高了程序运行的效率。

第一点:缓存函数,可以将RDD数据直接缓存到内存中,函数声明如下:

第二点 spark框架当中可以使用persist对数据的缓存指定不同的级别


image.png

全在磁盘当中
全在内存当中
内存满了存磁盘
默认是内存,开发当中常用 MEMORY_AND_DISK

2_RDD Checkpoint 机制

chaeckpint 检查点 备份数据, 因为存储到内存和磁盘当中也会有风险(会丢失) 所以会checkpoint到 HDFS当中 ,利用HDFS高容错率(三副本机制),而且checkpoint 切断了依赖关系 是个懒操作需要用触发算子进行触发一般使用count

    # 1. 获取上下文对象-context
    spark_conf = SparkConf().setAppName("PySpark Example").setMaster("local[2]")
    sc = SparkContext(conf=spark_conf)
    # TODO: step1、设置Checkpoint保存目录
    sc.setCheckpointDir('../datas/ckpt')

    # 2. 加载数据源-source
    input_rdd = sc.textFile('../datas/words.txt', minPartitions=2)

    # TODO: step2、将RDD进行Checkpoint
    input_rdd.checkpoint()
    input_rdd.count()

    # TODO: 当RDD进行Checkpoint以后,再次使用RDD数据时,直接从Checkpoint读取数据
    print(input_rdd.count())

3_RDD的持久化 和RDD Checkpoint的相同和区别

生命周期:

存储位置:

依赖关系

上一篇下一篇

猜你喜欢

热点阅读