首页/新闻资讯/正文详情

【算子3】spark(五):spark core:控制算子(cache、persist)、action算子和检查点

发布时间:2026/11/3 1:11:03 来源:云帆数科 栏目:资讯中心
【算子3】spark(五):spark core:控制算子(cache、persist)、action算子和检查点
【算子3】spark五spark core控制算子cache、persist和action算子和checkpoint文章目录一. Action 行动算子1. 行动算子概述2. 行动算子使用reducecollect()、count()、first()、take(n)、takeOrdered(n)aggregate()/fold()fold()函数aggregate二. 控制算子与检查点1. persist或cache概述使用2. 检查点一. Action 行动算子1. 行动算子概述一、无输出foreach(func)在数据集的每一个元素上运行函数func进行更新二、输出到文件系统saveAsTextFile(path):将数据集的元素以textfile的形式保存到HDFS文件系统或者其他支持的文件系统saveAsSequenceFile(path):将数据集中的元素以Hadoopsequencefile的格式保存到指定的目录下可以使HDFS或者其他Hadoop支持的文件系统saveAsObjectFile(path):用于将RDD中的元素序列化成对象存储到文件中三、Scala集合和数据类型reduce(func)通过func函数聚集RDD中的所有元素先聚合分区内数据再聚合分区间数据collect():在驱动程序Driver中以数组的形式返回数据集的所有元素count()返回元素个数take(n)返回RDD中前n个元素组成的数组takeOrdered(n):返回该RDD排序后前n个元素组成的数据aggregate()先对局部聚合再对全局聚合fold(num)(func)aggregate的简化操作countByKey()针对(K,V)类型的RDD返回一个(K,Int)的map即每个key出现的次数2. 行动算子使用reducevallistRDD:RDD[Int]sc.makeRDD(List(1,11,5,6,7))//1、k数据求和println(listRDD.reduce(__))//2、kv数据相加valrdd2sc.makeRDD(Array((a,1),(a,3),(c,3),(d,5)))println(rdd2.reduce((x,y)(x._1y._1,x._2y._2)))collect()、count()、first()、take(n)、takeOrdered(n)listRDD.collect().foreach(println)println(rdd2.count())println(rdd2.first())listRDD.take(2).foreach(println)listRDD.takeOrdered(2).foreach(println)aggregate()/fold()两个都是聚合函数先分区内聚合然后再分区外聚合。fold()函数aggregate的简化操作分区内和分区间的操作都是一致的。println(listRDD.fold(0)(__))aggregate函数说明统计一下在raw这个list中比f大与比f小的元素分别有多少个。valrawList(a,b,d,f,g,h,o,q,x,y)val(biggerthanf,lessthanf)sc.parallelize(raw,1).aggregate((0,0))(//分区内的统计逻辑(cc,str){varbiggerfcc._1varlessfcc._2if(str.compareTo(f)0)biggerfcc._11elseif(str.compareTo(f)0)lessfcc._21(biggerf,lessf)},//分区外的统计逻辑(x,y)(x._1y._1,x._2y._2))二. 控制算子与检查点两者的作用当血缘关系比较长会运行效率较差此时通过缓存或者checkpoint可以提高效率。1. persist或cache概述RDD通过persist或cache方法可以将之前rdd的计算结果所有数据的进行缓存。触发action之后该RDD将会被缓存到节点的内存中默认供重复使用。persist/cache的区别• Cache调用了persist方法且只有一个缓存级别MEMORY_ONLY• persist可以根据情况设置其他的缓存级别注意使用内存级缓存时注意当数据达到内存放不下时就会报溢出缓存级别存储在磁盘、内存存储两份序列化堆外内存非JVM中的内存使用valconfnewSparkConf().setMaster(local[6]).setAppName(debug_string)valscnewSparkContext(conf)valinterimRDDsc.textFile(dataset/access_log_sample.txt).map(item(item.split( )(0),1)).filter(itemStringUtils.isNotBlank(item._1)).reduceByKey((curr,agg)curragg).cache()//interimRDD 的结果进行缓存valresultLessinterimRDD.sortBy(itemitem._2,ascendingtrue).first()valresultMoreinterimRDD.sortBy(itemitem._2,ascendingfalse).first()println(s出现次数最少的 IP :$resultLess, 出现次数最多的 IP :$resultMore)sc.stop()cache之后一定不能立即有其它算子不能直接去接算子。因为在实际工作的时候cache后有算子的话它每次都会重新触发这个计算过程。2. 检查点当血缘过长多个action串联时容错成本会提高可以在中间计算阶段做检查点容错。当有节点出现分区数据丢失时可以从检查点的RDD开始根据血缘进行计算减少开销触发checkpoint的操作也是在Action算子后触发特点将血缘关系保存成文件即使是宕机文件也不会丢失。保存在HDFS上则会实现高容错此时RDD不会记录完整的血缘关系因为可以从检查点重新计算血缘

相关推荐

表现效果集合
表现效果集合

包含项目中用到的和自己学习的其他人或者其他文章的效果 自制的 瓶装水随机锥体生成浅表水纹UI闪电链框选shader 类似于微信截图的框选,在图片中画出一个框选框莫比乌斯环萤火切面湖水 主要功能有水纹扰动,菲涅尔cubemap反射,水深色开始高度&… · 2026/11/3 1:11:03

【源码|编译】flink 12 源码编译及使用idea运行、debug
【源码|编译】flink 12 源码编译及使用idea运行、debug

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:11:03

优秀 MATLAB 作者、书籍推荐:国外经典教材与技术资源整理
优秀 MATLAB 作者、书籍推荐:国外经典教材与技术资源整理

目录 优秀 MATLAB 作者、书籍推荐:国外经典教材与技术资源整理 一、Cleve Moler:从 MATLAB 的起源理解科学计算 Numerical Computing with MATLAB Experiments with MATLAB 二、Nicholas Higham 与 Desmond Higham:数值计算的准确性和可靠… · 2026/11/3 1:11:03

【56】渣土车数据集(有v5/v8模型)/YOLO渣土车检测
【56】渣土车数据集(有v5/v8模型)/YOLO渣土车检测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 2:02:20

【MLOps(1)】MLOps 架构总览与全方位基础:从实验室到生产环境的实战指南
【MLOps(1)】MLOps 架构总览与全方位基础:从实验室到生产环境的实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 2:02:20

BFS:用FLUX 2实现超自然AI换脸的终极工具
BFS:用FLUX 2实现超自然AI换脸的终极工具

BFS:用FLUX 2实现超自然AI换脸的终极工具 导语:基于FLUX 2 Klein模型打造的BFS (Best Face Swap)换脸工具,通过LoRA技术实现了高保真度的面部与头部替换,其推出标志着AI图像编辑领域在自然度与可控性方面达到新高度。 行业现状&am… · 2026/11/3 2:02:20

WorldPM-72B震撼发布:偏好模型缩放新突破
WorldPM-72B震撼发布:偏好模型缩放新突破

WorldPM-72B震撼发布:偏好模型缩放新突破 导语:Qwen团队发布720亿参数偏好模型WorldPM-72B,通过1500万偏好数据训练揭示偏好模型遵循与语言模型相似的缩放定律,为大模型对齐技术带来范式转变。 行业现状:随着大语言模… · 2026/11/3 2:02:20

Z-Image-Distilled:10步快速生成高质量AI绘图
Z-Image-Distilled:10步快速生成高质量AI绘图

Z-Image-Distilled:10步快速生成高质量AI绘图 导语 Z-Image-Distilled模型通过蒸馏加速技术,将AI绘图生成步骤压缩至10步即可获得高质量结果,在保持创作多样性的同时大幅提升效率,为创作者带来全新的快速工作流体验。 行业现状 当… · 2026/11/3 2:02:20

如何集成cyrillic_PP-OCRv5_mobile_rec_onnx到你的应用:3种简单集成方案
如何集成cyrillic_PP-OCRv5_mobile_rec_onnx到你的应用:3种简单集成方案

如何集成cyrillic_PP-OCRv5_mobile_rec_onnx到你的应用:3种简单集成方案 cyrillic_PP-OCRv5_mobile_rec_onnx是一款基于飞桨PaddlePaddle开发的轻量级西里尔字母识别模型,采用ONNX格式封装,专为移动应用和边缘设备优化。本文将介绍3种简单高… · 2026/11/3 2:01:19

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码