3.5 RDD持久化机制
一、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已被移除。

相关文章:
3.5 RDD持久化机制
一、RDD持久化 1、不采用持久化操作 查看要操作的HDFS文件 以集群模式启动Spark Shell 按照图示进行操作,得RDD4和RDD5 查看RDD4内容,会从RDD1到RDD2到RDD3到RDD4跑一趟 显示RDD5内容,也会从RDD1到RDD2到RDD3到RDD5跑一趟 2、采用持久化…...
Nginx(四)
部署LNMP架构动态网站WordPress LNMPLinuxNginxMySQLPhp 环境 192.168.29.141centos8Nginx1.24.0192.168.29.142centos8MySQL8.0.33192.168.29.143centos8Php7.2.24 关闭firewalld systemctl stop firewalld systemctl disable firewalld 关闭selinux setenforce 0 sed -ir…...
【fps系统重构】-观察cpu、memroy、io -iostat
当您使用iostat命令监控磁盘I/O情况时,可以查看以下指标: rrqm/s:每秒发生的读请求被合并的次数。如果该指标很低,说明读请求较少或未被合并,可能会导致磁盘I/O负载过重。wrqm/s:每秒发生的写请求被合并的…...
iptables 添加,删除,查看,修改,及docker运行时修改端口
一,安装并启动防火墙 [rootlinux ~]# /etc/init.d/iptables start 当我们用iptables添加规则,保存后,这些规则以文件的形势存在磁盘上的,以centos为例,文件地址是/etc/sysconfig/iptables,我们可以通过命令的方式去…...
Liunx安装Android Studio
Liunx安装Android Studio 可参考官方文档: 安装 Android Studio 如需在 Linux 上安装 Android Studio,请按以下步骤操作: 1.将您下载的 .zip 文件解压缩到您应用的相应位置,例如 /usr/local/ 中(用于用户个人资料&am…...
8、Linux C/C++ 实现MySQL的图片插入以及图片的读取
本文结合了Linux C/C 实现MySQL的图片插入以及图片的读取,特别是数据库读写的具体流程 一、文件读取相关函数 fseek() 可以将文件指针移动到文件中的任意位置。其基本形式如下: int fseek(FILE *stream, long offset, int whence);其中,str…...
【搭建轻量级图床】本地搭建LightPicture开源图床管理系统 - 异地远程访问
文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进,功能也越来越多,而手机…...
微信小程序全局路由拦截
前言 略 微信小程序全局路由拦截方法1 目前微信小程序没有全局路由拦截。要想实现全局路由拦截,需要自己进行扩充。具体参考这里:微信小程序–路由拦截器。 实现思路: 替换Page的参数对象的onShow或onLoad方法。在替换的onShow或onLoad方…...
截图自动添加水印(macOS/windows)
文章目录 1. 截图自动加水印1.1. windows1.2. macOS 2. 对已有图像批量加水印2.1 windows2.2 macOS 1. 截图自动加水印 1.1. windows 直接看这篇文章,一键截图自动生成水印/自动签名主要就是使用一个叫 SPX 的软件 1.2. macOS 其实apple的操作系统,i…...
大学四年,我建议你这么学网络安全
在所有关注我的朋友中,大致分为两类,一类是社会人士,有的是安全老手,有的是其它工作但对安全感兴趣的朋友,另一类应该就是大学生了。 尤其随着国家的号召和知识的普及,越来越多的人开始对网络安全感兴趣&a…...
Spring Boot整合Redis缓存并使用注解
Spring Boot整合Redis缓存并使用注解 在Spring Boot应用程序中,您可以使用Spring Cache库与Redis缓存进行集成,以提高应用程序的性能和响应速度。Spring Cache库提供了一组注解,包括Cacheable、CachePut和CacheEvict,可以方便地将…...
通知可以根据切入点表达式来进行增强,也可以根据自己的注解值来进行增强
通知可以根据切入点表达式来进行增强,也可以根据自己的注解值(例如 Before、After、Around 等)来进行增强。 如果要根据切入点表达式来进行增强,需要在通知注解中使用 Pointcut 注解来引用切入点表达式。例如,在以下示…...
<Python实际应用>做一个简单的签到投屏系统
公司接了个活,承办一个由团委组织的五四青年节徒步活动,其中一个环节是现场报名,来的人把名字填进去后随机分组,并显示在现场的LED大屏幕上,我自告奋勇用Python来开发这个小程序。这里记录一下 【项目需求】 1、报名…...
时序预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元时间序列预测
时序预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元时间序列预测 目录 时序预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元时间序列预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 基于贝叶斯(bayes)优化卷积神经网络-门控循环单元(CNN-GR…...
Baumer工业相机堡盟工业相机使用BGAPISDK将工业相机设为Burst模式以及该模式的优势以及行业应用(C++)
Baumer工业相机堡盟工业相机使用BGAPISDK将工业相机设为Burst模式以及该模式的优势以及行业应用(C) Baumer工业相机Baumer工业相机的Burst模式的技术背景Baumer工业相机使用BGAPISDK将设置Burst模式1.引用合适的类文件2.使用BGAPI SDK初始化相机设置Burs…...
BERT输入以及权重矩阵形状解析
以下用形状来描述矩阵。对于向量,为了方便理解,也写成了类似(1,64)这种形状的表示形式,这个你理解为64维的向量即可。下面讲的矩阵相乘都是默认的叉乘。 词嵌入矩阵形状:以BERT_BASE为例,我们知道其有12层Encoder&…...
3 个令人惊艳的 ChatGPT 项目,开源了!
过去一周,AI 界又发生了天翻地覆的变化,其中,最广为人知的,应该是 OpenAI 正式上线 ChatGPT iOS 客户端,让所有人都可以更方便的在手机上与 ChatGPT 聊天。 此外,Stable Diffusion 母公司 Stability AI 也…...
一、12.C++内存管理
C++内存管理 28.C++的内存管理 和C基本一致 代码区(Code Segment):也称为文本区,存放程序的可执行代码。 全局区(Global/Static Segment):存放全局变量、静态变量和常量。程序在编译后,分配这些数据的空间。 栈区(Stack Segment):存放函数调用时的参数、返回地…...
ensp实践dhcp服务
ensp实践dhcp服务 1、dhcp接口分配模式2、dhcp接口地址池分配模式3、dhcp布拉布拉布拉 1、dhcp接口分配模式 1.1、路由器AR1配置dhcp动态获取 <Huawei>system-view [Huawei]interface g0/0/0 [Huawei-GigabitEthernet0/0/0]ip address 10.1.1.1 24 [Huawei-GigabitEthe…...
【王道·计算机网络】第六章 应用层
一、基本概念 1.1 应用层概述 应用层对应用程序的通信提供服务应用层协议定义: 应用进程交换的报文类型,请求还是响应?各种报文类型的语法,如报文中的各个字段及其详细描述字段的语义,即包含在字段中的信息的含义进程何时、如何…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...
李沐--动手学深度学习--GRU
1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...
