RDD 持久化

持久化指将数据进行保存,避免数据丢失。

RDD 持久化并非将数据落盘,而是缓存数据,供后续计算使用。

Cache()

  • 底层是 persist(),没有指定参数,默认 MEMORY_ONLY

persist()

  • 使用指定的方式进行持久化
  • StorageLevel.
    • MEMORY_ONLY
      • 内存优先
      • RDD 分区空间不够,旧的分区会直接删除
    • MEMORY_AND_DISK_SER
      • 优先内存,内存不足到磁盘。
      • 节省重新计算的开销
    • MEMORY_ONLY_SER
      • 在内存存放序列化后的数据
        • 序列化存储能减少内存开销,反序列化会增大 cpu 开销
    • DISK_ONLY
  • SER
    • 序列化保存

Checkpoint

  • 将 RDD 中间结果二进制形式写入磁盘
  • 使用
    • sc.setCheckpointDir(“hdfs://hadoop102:9820/output/a”)
    • rdd.checkpoint()
    • 手动释放rddx.unpersist(true)

Question

  • RDD 持久化方式?#card
    • ((66b0ee63-1749-4898-b4d9-5ab20b6d0d2d))
    • ((66b0ee63-e35a-4fcc-8279-e5a6303b2d22))
  • memory_only 如果内存存储不了,会怎么操作?#card
    • 利用 [[LRU]] 的缓存策略把最老的分区从内存中移除
    • 下一次使用被移除的分区需要重新计算

网络回响

作者

Ryen Xiang

发布于

2026-02-17

更新于

2026-02-17

许可协议


评论