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

hudi写时复制与读时合并

COPY_ON_WRITE 是 Apache Hudi 中的一种表存储模式,指的是 写入数据时复制(写时复制) 的策略。具体来说,它描述了在更新、插入或删除数据时的存储方式和行为。

详细解释:

Hudi 目前提供两种主要的存储类型:COPY_ON_WRITEMERGE_ON_READ。其中,COPY_ON_WRITE 是一种 写时复制 的策略,而 MERGE_ON_READ 则是 读时合并 的策略。每种策略都有不同的性能特点和适用场景。

COPY_ON_WRITE 模式的工作原理:
  • 写时复制(Copy on Write):每当数据发生更新时,Hudi 会为更新的数据创建一个新的文件版本,而不是直接修改原有的数据文件。旧的数据文件会保留下来,直到进行垃圾回收操作时才会被清理。这种方式确保了数据的一致性和完整性,因为它避免了在更新时直接覆盖数据,减少了出现脏数据的风险。

  • 更新过程:在 COPY_ON_WRITE 模式下,当数据更新时,Hudi 会:

    1. 读取到要更新的数据。
    2. 生成一个新的数据文件,并将更新的数据写入新文件中。
    3. 通过元数据管理确保数据的一致性和查询的正确性。
  • 文件存储:每次写入更新时,会生成新的 Parquet 文件,而不是修改原始的 Parquet 文件。这样做的好处是,能够提供更加可靠的数据版本控制,并且查询时会访问到更新后的数据。

COPY_ON_WRITE 与 MERGE_ON_READ 的比较:
  • COPY_ON_WRITE

    • 优点:更新时创建新的文件,能够保证数据一致性,适合于读操作较频繁、写操作较少的场景。
    • 缺点:每次更新都要创建新文件,可能会产生更多的小文件,因此需要定期进行文件合并(Compaction)来优化性能。
  • MERGE_ON_READ

    • 优点:数据更新时不创建新的文件,而是对现有的文件进行修改和合并,适合于写操作频繁的场景。
    • 缺点:读取数据时需要合并多个文件(包括更新后的和旧的文件),查询性能可能会受影响。
COPY_ON_WRITE 适用场景:
  • 查询为主的工作负载:如果系统中主要是读操作较多,而写操作相对较少,可以选择 COPY_ON_WRITE,因为这种模式可以在查询时提供较好的性能。
  • 数据一致性要求高的场景:由于每次更新都会生成新的数据文件,这种方式有助于减少在数据写入过程中可能出现的脏数据问题,适合对数据一致性要求高的应用。

总结:

  • COPY_ON_WRITE 是一种更新数据时创建新文件的策略,适用于查询为主、写入较少的场景。
  • 该模式通过为每次更新的数据创建新的文件来保证数据一致性和完整性,但会带来一定的存储开销(生成更多的文件),因此需要定期进行文件合并(Compaction)。

如果你的应用场景更多依赖于读取性能,并且更新较少,COPY_ON_WRITE 是一个合适的选择。


http://www.mrgr.cn/news/70017.html

相关文章:

  • 【Ubuntu24.04】服务部署(基础)
  • 【深度学习】使用硬件加速模型训练速度
  • LeetCode100之相交链表(160)--Java
  • golang分布式缓存项目 Day5 分布式节点
  • 【神经科学学习笔记】基于分层嵌套谱分割(Nested Spectral Partition)模型分析大脑网络整合与分离的局部指标(二)
  • 刘知远LLM——大模型微调:prompt-learningdelta tuning
  • 计算机组成原理(指令格式)
  • 被秀到了!注意力+时空特征融合,秒锁1区!快码住学思路
  • 【初阶数据结构篇】二叉树OJ题
  • crond 任务调度 (Linux相关指令:crontab)
  • 算法求解--计算两个字符串之间的最小交换次数(相似度为 K 的字符串)
  • 大数据入门-什么是HBase
  • 基于Spring Boot+Vue的学院食材采供管理系统
  • 大厂面试真题-说说tomcat的优缺点
  • C++builder中的人工智能(19):如何在C++中制作一个简单但强大的聊天机器人?
  • 【Steam登录】protobuf协议逆向 | 续
  • Chrome浏览器如何导出所有书签并导入书签
  • Node Game(CRLF注入)
  • gtfToGenePred如何下载
  • 对于大根堆的计算时间复杂度的过程
  • Spring Boot 监视器
  • 【IT人物系列】之Java之父
  • lineageos-19 仓库群遍历,打印第一条git log
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:新技术融合的无限可能(下)(12/30)
  • 7个常用的JavaScript数组操作进阶用法
  • 蜜蜂交配优化算法(Honey-Bee Mating Optimization Algorithm,HBMOA)的MATLAB实现