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

学习进度 3

今天的学习目标聚焦解决重复计算的性能问题(RDD 持久化),并摆脱交互式 Shell,完成独立 Spark 应用程序的开发、打包与运行,这也是从 “零散操作” 到 “工程化开发” 的关键一步。
昨天在 Shell 中操作时发现一个问题:如果对同一个 RDD 多次执行行动操作,Spark 会重复从头计算这个 RDD 的所有依赖链。比如对处理后的单词 RDD 既执行collect()又执行saveAsTextFile(),两次行动操作会触发两次完整的计算流程,数据量小的时候没感觉,但数据量大时会严重拖慢速度。
今天重点学习的RDD 持久化就是解决这个问题的核心方案:通过cache()或persist()方法,将 RDD 的数据存储在内存中,后续操作直接读取缓存数据,无需重复计算。

  1. 持久化的核心用法
    先明确两个方法的区别:
    cache():简化版的persist(),默认将 RDD 持久化到内存(对应存储级别MEMORY_ONLY)。
    persist():可以指定存储级别,比如MEMORY_AND_DISK(内存存不下时写入磁盘)、DISK_ONLY(仅存磁盘)等,更灵活。
  2. 实操验证性能差异
    我在 Spark Shell 中做了一组对比测试,用一个稍大的数据集(生成 100 万条随机数的 RDD
    // 1. 不使用持久化,两次行动操作
    val rdd = sc.parallelize(1 to 1000000).map(_ => scala.util.Random.nextInt(1000))
    // 第一次count(触发完整计算)
    val start1 = System.currentTimeMillis()
    rdd.count()
    val end1 = System.currentTimeMillis()
    println(s"第一次count耗时:${end1 - start1}ms") // 输出约120ms

// 第二次count(重复计算)
val start2 = System.currentTimeMillis()
rdd.count()
val end2 = System.currentTimeMillis()
println(s"第二次count耗时:${end2 - start2}ms") // 输出约115ms

// 2. 使用持久化,两次行动操作
val rddCache = sc.parallelize(1 to 1000000).map(_ => scala.util.Random.nextInt(1000))
rddCache.cache() // 缓存RDD

// 第一次count(触发计算并缓存)
val start3 = System.currentTimeMillis()
rddCache.count()
val end3 = System.currentTimeMillis()
println(s"缓存后第一次count耗时:${end3 - start3}ms") // 输出约125ms(略长,因为要缓存)

// 第二次count(读取缓存)
val start4 = System.currentTimeMillis()
rddCache.count()
val end4 = System.currentTimeMillis()
println(s"缓存后第二次count耗时:${end4 - start4}ms")
测试结果很直观:未缓存时两次计算耗时几乎一致,缓存后第二次计算耗时仅为第一次的 1/8,这就是持久化的核心价值。同时也注意到,缓存后的第一次计算会略慢,因为需要额外的时间将数据写入内存,这是新手容易忽略的点。

http://www.jsqmd.com/news/258900/

相关文章:

  • 2026线路板灌胶机厂家权威推荐榜单:环氧树脂灌胶机/硅胶灌胶机/手动灌胶机/半自动灌胶机/聚氨酯灌胶机源头厂家精选。 - 品牌推荐官
  • 通化市辉南柳河通化东昌二道江英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025
  • 2025年南京回收精密仪器公司权威推荐榜单:废金属收购/ 废金属回收 /高价废金属回收/ 废金属的回收 /废不锈钢废金属回收服务商精选 - 品牌推荐官
  • 白山市浑江江源临江英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025
  • 乐平市雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025
  • 2026年热门流量计选购指南:插入式涡街流量计怎么选?食用油流量计/喷嘴/柴油流量计/氧气流量计,流量计源头厂家哪家强 - 品牌推荐师
  • web入门51-60
  • 一下午讲了 9 道题?!
  • 单锥真空螺带干燥机怎么挑?2026年优质厂家解析,沸腾干燥机/喷雾干燥机/污泥干化,单锥真空螺带干燥机定制厂家找哪家 - 品牌推荐师
  • 永磁同步电机参数辨识模型,在线辨识,离线辨识,电参数机械参数均可辨识,基于最小二乘法,滑模观测...
  • 2025年上海组织效能人才管理咨询企业权威推荐榜单:跨境管理咨询 /数字化转型管理咨询 /组织效能人才管理咨询/ 管理咨询公司避坑/ 供应链管理咨询伙伴精选 - 品牌推荐官
  • Eunomia:分层卫星网络中多控制器域划分框架 - 指南
  • Redis技巧:处理大量Key同时过期的5个关键点!
  • 2026年如何挑选国内新型高铁实训室优质厂商?诚信的实训室批发厂家聚焦优质品牌综合实力排行 - 品牌推荐师
  • 深度测评专科生必备8款AI论文工具:开题报告文献综述全攻略
  • 安徽合肥GEO公司找哪家 - 野榜数据排行
  • 免费网站进阶!——InfinityFree创建数据库教程
  • 【脑源定位】基于非负块稀疏贝叶斯学习算法脑电脑源定位附Matlab代码
  • 2026福建草本塑魔仪抗衰套装公司权威推荐榜单:美航著妍草本年轻态团购 /美航草本年轻态加盟 /草本年轻态面膜美航/草本年轻态产品/ 美航草本年轻态企业精选 - 品牌推荐官
  • 2026年组装/厂区/工厂/花园/铁艺锌钢护栏实力厂家推荐:精选源头企业,适配工业、建筑、市政全场景 - 品牌推荐官
  • 【数据分析】基于 RANSAC算法的鲁棒直线拟合实现附matlab代码
  • 2026年杭州滨江集团房源渠道权威解析:好房首选 /捡漏好房 /买房首选 /性价比房源/ 2026年新房平台甄选 - 品牌推荐官
  • 2026年专业的淮安整装,淮安系统门窗,淮安全包公司选型推荐手册 - 品牌鉴赏师
  • 2026年真空干燥机行业全景报告与制造厂家推荐榜:立式/卧式/四轴螺旋/夹套螺旋/空心螺旋/连续高效真空干燥设备选型指南 - 品牌推荐官
  • 闪测仪厂家综合实力TOP5榜单:技术与市场的深度洞察 - 工业仪器权威说
  • STM32——定时器:通用定时器
  • 【MongoDB实战】5.1 聚合管道基础:理解阶段(Stage)概念 - 实践
  • STM32——定时器:高级定时器
  • 【Java毕设全套源码+文档】基于springboot的健康医疗体检管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 【Java毕设全套源码+文档】基于springboot的健康医疗体检管理系统设计与实现(丰富项目+远程调试+讲解+定制)