当前位置: 首页 > news >正文

spark缓存-persist

存储级别指定

persist:可以通过传入 StorageLevel 参数来指定不同的持久化级别。常见的持久化级别有:

MEMORY_ONLY:将 RDD 以 Java 对象的形式存储在 JVM 的内存中。若内存不足,部分分区将不会被缓存,需要时会重新计算。

MEMORY_AND_DISK:优先把 RDD 以 Java 对象的形式存储在 JVM 的内存中。若内存不足,会把多余的分区存储到磁盘上。

DISK_ONLY:将 RDD 的数据存储在磁盘上。

MEMORY_ONLY_SER:将 RDD 以序列化的 Java 对象形式存储在内存中,相较于 MEMORY_ONLY,序列化后占用的内存空间更小,但读取时需要进行反序列化操作,会带来一定的性能开销。

MEMORY_AND_DISK_SER:优先将 RDD 以序列化的 Java 对象形式存储在内存中,内存不足时存储到磁盘上。

cache:不能指定存储级别,它固定使用 MEMORY_ONLY 存储级别。

​
import org.apache.spark.storage.StorageLevel
import org.apache.spark.{SparkConf, SparkContext}object Cache {//Spark的缓存//1.cache()//2.persist()//cache()是persist()的一种特殊情况def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName("Cache").setMaster("local[*]")val sc = new SparkContext(conf)sc.setLogLevel("WARN")//创建一个包含大量随机数的RDDval rdd = sc.parallelize(1 to 1000000).map( _=> scala.util.Random.nextInt(100))//定义一个复杂的转换函数def complexTransformation(x:Int): Int = {var result=xfor(i<-1 to 1000){result=result*2%100}result}//val rdd1=rdd.map(complexTransformation)//缓存rdd//val rdd1=rdd.map(complexTransformation).cache()//persistval rdd1=rdd.map(complexTransformation).persist(StorageLevel.DISK_ONLY)//第一次触发行动算子,计算并统计消耗时间val startTime=System.currentTimeMillis()val rs1=rdd1.collect()val endTime=System.currentTimeMillis()println("第一次计算消耗时间:"+(endTime - startTime)+"毫秒")//第二次触发行动算子,计算并统计消耗时间val startTime1=System.currentTimeMillis()val rs2=rdd1.collect()val endTime1=System.currentTimeMillis()println("第二次计算消耗时间:"+(endTime1 - startTime1)+"毫秒")}}​

相关文章:

  • 算法与数据结构 - 二叉树结构入门
  • 【HarmonyOS NEXT+AI】问答05:ArkTS和仓颉编程语言怎么选?
  • 使用 React Native实现鸿蒙开发的详细方案
  • 双端口ram与真双端口ram的区别
  • 解决 MySQL 数据库无法远程连接的问题
  • BLURRR剪辑软件免费版:创意剪辑,轻松上手,打造个性视频
  • Kubernetes Gateway API 部署详解:从入门到实战
  • Django ORM: values() 和 annotate() 方法详解
  • 排序算法-归并排序
  • istio in action之Gateway流量入口与安全
  • OpenHarmony平台驱动开发(十一),PIN
  • 01.three官方示例+编辑器+AI快速学习webgl_animation_keyframes
  • 解密火星文:LeetCode 269 题详解与 Swift 实现
  • 前端指南——项目代码结构解析(React为例)
  • 在 Ubuntu 上安装并运行 ddns-go 教程
  • 前端面试每日三题 - Day 29
  • 45.传导发射整改摸底测试方法
  • 37-智慧医疗服务平台(在线接诊/问诊)
  • rtsp,。。。。
  • 探索Stream流:高效数据处理的秘密武器
  • 印度证实印巴已同意停火
  • 黑灰产工作室为境外诈骗集团养号引流,冒充美女与男性裸聊后敲诈勒索
  • 人民财评:网售“婴儿高跟鞋”?不能让畸形审美侵蚀孩子身心
  • 九家企业与上海静安集中签约,投资额超10亿元
  • 顾家家居:拟定增募资近20亿元,用于家居产品生产线的改造和扩建等
  • 上海质子重离子医院二期项目启动,有望成为全世界最大粒子治疗中心