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

Spark 缓存(Caching)

Spark 缓存机制详解

1. 缓存的核心作用
  • 加速计算:通过将重复使用的数据集存储在内存或磁盘,避免重复计算
  • 优化迭代算法:适用于机器学习训练、图计算等需要多次访问同一数据集的场景
  • 减少I/O开销:对于频繁访问的外部数据源,缓存后可降低读取成本
2. 持久化级别对比
级别存储方式序列化适用场景
MEMORY_ONLY仅内存内存充足的小数据集
MEMORY_AND_DISK内存+磁盘溢出内存受限的较大数据集
MEMORY_ONLY_SER内存(序列化存储)内存优化场景
DISK_ONLY仅磁盘超大数据集
3. 代码实现示例
from pyspark import StorageLevel# 创建DataFrame
df = spark.read.parquet("hdfs://data/large_dataset")# 缓存方式一(默认MEMORY_AND_DISK)
df.cache().count()  # 立即触发缓存# 缓存方式二(指定存储级别)
df.persist(StorageLevel.MEMORY_ONLY_SER)# 释放缓存
df.unpersist()

4. 使用场景判断

✅ 推荐缓存:

  • 循环使用的中间结果(迭代算法)
  • 被多次访问的广播连接表
  • 需要快速访问的预处理数据

❌ 避免缓存:

  • 仅单次使用的数据集
  • 大于集群可用内存50%的数据量
  • 频繁更新的动态数据
5. 性能优化技巧
  • 缓存前使用.filter().select()精简数据
  • 对宽表优先使用序列化存储(节省30%-50%内存)
  • 监控存储管理器:
    print(spark.sparkContext.uiWebUrl)  # 查看Storage选项卡
    

  • 配合checkpoint使用:切断RDD血缘关系,避免堆栈溢出
6. 缓存失效场景
  • JVM内存不足时自动逐出
  • 节点故障导致分区丢失
  • 调用unpersist()主动释放
  • 应用结束时自动清除
7. 高级配置参数
spark.storage.memoryFraction=0.6  # 内存分配比例
spark.serializer=org.apache.spark.serializer.KryoSerializer
spark.memory.offHeap.enabled=true  # 启用堆外内存
spark.memory.offHeap.size=2g

通过合理使用缓存,典型场景可提升作业性能3-10倍。建议结合Spark UI监控缓存命中率和内存使用情况,动态调整存储策略。

相关文章:

  • 配置Nginx启用Https
  • C++中void*知识详解和注意事项
  • LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
  • Pytorch张量和损失函数
  • Java详解LeetCode 热题 100(15):LeetCode 189. 轮转数组(Rotate Array)详解
  • 工程类论文查重困局破解:基于知识图谱的跨学科语义重构技术实证研究
  • 通讯录程序
  • 利用比较预言机处理模糊的偏好数据
  • Java Spring MVC -01
  • [Java实战]Spring Boot 3 整合 Apache Shiro(二十一)
  • 多模态融合【十九】——MRFS: Mutually Reinforcing Image Fusion and Segmentation
  • GOOSE 协议中MAC配置
  • CVE-2025-31258 macOS远程视图服务沙箱逃逸漏洞PoC已公开
  • JAVA研发+前后端分离,ZKmall开源商城B2C商城如何保障系统性能?
  • 使用scp命令拷贝hadoop100中文件到其他虚拟机中
  • 深度学习之优化器【从梯度下降到自适应学习率算法】(pytorch版)
  • C语言| extern的用法作用
  • TB67S109AFTG, TB67S109AFNG是一款采用PWM斩波器的两相双极步进电机驱动器内置有时钟输入解码器。采用BiCD工艺制造
  • java刷题基础知识
  • 如何通过 Windows 图形界面找到 WSL 主目录
  • 最新研究:新型合成小分子可“精准杀伤”癌细胞
  • 多家外资看好中国市场!野村建议“战术超配”,花旗上调恒指目标价
  • 【社论】个人破产探索,要守住“诚实而不幸”的底线
  • 受贿3501万余元,中石油原董事长王宜林一审被判13年
  • 王毅集体会见加勒比建交国外长及代表
  • 中国科考船在钓鱼岛附近活动,外交部:完全是中国主权权利范围内的事