3.5 RDD持久化机制

news/2024/11/24 9:22:18/

一、RDD持久化

1、不采用持久化操作
查看要操作的HDFS文件
在这里插入图片描述
以集群模式启动Spark Shell
在这里插入图片描述
按照图示进行操作,得RDD4和RDD5
在这里插入图片描述
查看RDD4内容,会从RDD1到RDD2到RDD3到RDD4跑一趟
在这里插入图片描述
显示RDD5内容,也会从RDD1到RDD2到RDD3到RDD5跑一趟

在这里插入图片描述
2、采用持久化操作
在这里插入图片描述
计算RDD4,就是基于RDD3缓存的数据开始计算,不用从头到尾跑一趟
在这里插入图片描述
计算RDD5,就是基于RDD3缓存的数据开始计算,不用从头到尾跑一趟
在这里插入图片描述

二、存储级别

案例演示设置存储级别
在这里插入图片描述

package net.cxf.rdd.day05import org.apache.log4j.{Level, Logger}
import org.apache.spark.storage.StorageLevel
import org.apache.spark.{SparkConf, SparkContext}import java.awt.SystemTray/*** 功能:* 作者:cxf* 日期:2023年05月06日*/
object SetStorageLevel {def main(args: Array[String]): Unit = {//创建Spark配置对象val conf = new SparkConf().setAppName("SetStorageLevel") //设置应用名称.setMaster("local[*]") //设置主节点位置(本地调试>// 基于Spark配置对象创建Spark容器val sc = new SparkContext(conf)//去除Spark运行信息Logger.getLogger("org").setLevel(Level.OFF)Logger.getLogger("com").setLevel(Level.OFF)System.setProperty("spark.ui.showConsoleProgress", "false")Logger.getRootLogger().setLevel(Level.OFF)//创建RDDval rdd = sc.textFile("hdfs://master:9000/park/words.txt")//将rdd标记为持久化,采用默认存储级别- StorageLevel.MEMORY_ONLYrdd.persist() //无参持久化方法//对rdd做扁平映射,得到rdd1val rdd1 = rdd.flatMap(_.split(" "))//将rdd1持久化都磁盘rdd1.persist(StorageLevel.DISK_ONLY)//将rdd1映射成二元组,得到rdd2val rdd2 = rdd1.map((_, 1))//将rdd2持久化到内存,溢出的数据持久化到磁盘rdd2.persist(StorageLevel.MEMORY_AND_DISK)//第一次行动算子,对标记为持久化的RDD进行不同级别的持久化曹println("元素个数:" + rdd2.count)//第二次行动算子,直接利用rdd2的持久化数据进行操作,无须从头进行计算rdd2.collect.foreach(println)}}

运行程序,查看结果

在这里插入图片描述

三、利用Spark WebUI查看缓存

最好重启Spark Shell
在这里插入图片描述
(一)创建RDD并标记为持久化
在这里插入图片描述
(二)Spark WebUI查看RDD存储信息
在这里插入图片描述
收集RDD数据
在这里插入图片描述
刷新WebUI,发现出现了一个ParallelCollectionRDD的存储信息,该RDD的存储级别为MEMORY,持久化的分区为8,完全存储于内存中。
在这里插入图片描述
单击ParallelCollectionRDD超链接,可以查看该RDD的详细存储信息
在这里插入图片描述
执行以下命令,创建rdd2,并将rdd2持久化到磁盘
在这里插入图片描述
刷新上述WebUI,发现多了一个MapPartitionsRDD的存储信息,该RDD的存储级别为DISK,持久化的分区为8,完全存储于磁盘中。
在这里插入图片描述
(三)将RDD从缓存中删除
在这里插入图片描述
刷新上述WebUI,发现只剩下了MapPartitionsRDD,ParallelCollectionRDD已被移除。
在这里插入图片描述


http://www.ppmy.cn/news/78240.html

相关文章

Flutter项目webview加载没有HTTPS证书的网页在Android和iOS设备上无法显示的解决方案

一、问题描述 Flutter项目使用谷歌官方webview库 webview_flutter,加载自签名证书、证书失效、无证书等HTTPS网页地址时,在Android或pc浏览器中提示证书失效,在iOS设备上为空白页,为了加载自签名证书的网页,需要饶过i…

后端SpringBoot应用向云原生K8S平台迁移

目录 一、引言二、方式1:在K8S上部署Spring Cloud Alibaba三、方式2:在K8S上部署Spring Cloud K8S3.1 第1次优化:移除Spring Cloud K8S DiscoveryClient 四、方式3:在K8S上部署SpringBoot应用4.1 第2次优化:移除Spring…

5月第3周榜单丨飞瓜数据B站UP主排行榜单(哔哩哔哩)发布!

飞瓜轻数发布2023年5月15日-5月21日飞瓜数据UP主排行榜(B站平台),通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况,为用户提供B站号综合价值的数据参考,根据UP主成长情况用户能够快速找到运营能力强的B…

静态时序分析-时序检查

时序检查 一旦在触发器的时钟引脚上定义了时钟,便会自动推断出该触发器的建立时间和保持时间检查。时序检查通常会在多个条件下执行,通常,最差情况的慢速条件对于建立时间检查很关键,而最佳情况的快速条件对于保持时间检查很关键。 1.建立时间检查 在时钟的有效沿到达触…

Python爬虫入门案例6:scrapy的基本语法+使用scrapy进行网站数据爬取

几天前在本地终端使用pip下载scrapy遇到了很多麻烦,总是报错,花了很长时间都没有解决,最后发现pycharm里面自带终端!(狂喜),于是直接在pycharm终端里面写scrapy了 这样的好处就是每次不用切换路…

当前社会下,软件测试工程师如何提高竞争力应对变局?

当前社会大家压力都很大,但唯独不变的,笔者还是认为大家要提高自己的技能能力,提高自己,以不变应万变!!软件测试在工作中可以从如下方面提高自己: 1. 想客户之所想 在测试的过程中时刻想着用户…

设计模式 - 工厂模式

简单工厂模式 基本介绍: 简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一 个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族 中最简单实用的模式简单工厂模式:定义了一个创建对象的类,由这个类来封…

数据结构(C语言):有序顺序表的设计及相关操作函数

一、题目 有序顺序表的设计 实验要求: 有序顺序表的操作,包括初始化,求数据元素个数,插入,删除和取数据元素。放在头文件中(建议尝试用动态数组实现有序顺序表);注意有序顺序表的…