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

Iceberg 写入和更新模式,COW,MOR(Copy-on-Write,Merge-on-Read)

1. 追加写入

特点

  • 只新增数据,不更新表中已有的数据。

适用场景

  • Spark: 使用 insert into 写入 v1 和 v2 表。
  • Flink Batch: 使用 insert into 写入 v1 和 v2 表。
  • Flink Streaming: 使用 insert into 写入 v1 表。

2. 覆盖写入

特点

  • 覆盖表的指定分区,更新粒度为分区级别。
  • 不进行数据去重,不保证主键唯一性,即使是 v2 表也不例外。

适用场景

  • Spark: 使用 insert overwrite 写入 v1 和 v2 表。
  • Flink Batch: 使用 insert overwrite 写入 v1 和 v2 表。

3. 行级更新

语法

  • Spark 支持: 使用 merge intodelete fromupdate

更新模式

  • Two modes: Copy-On-Write (CoW) and Merge-On-Read (MOR) with copy-on-write as the default.
  • 可通过以下表参数修改:
表参数
write.delete.modecopy-on-write, merge-on-read
write.merge.modecopy-on-write, merge-on-read
write.update.mode仅支持 copy-on-write

Copy-On-Write 模式 (CoW)

https://en.wikipedia.org/wiki/Copy-on-write
Copy-On-Write 模式在 v1 表或者 v2 表都可以使用。

工作原理

  1. 读取原始数据: 读取与更新匹配的文件或片段。
  2. 应用更新: 在内存中处理数据,将修改应用于数据。
  3. 写入新文件: 将更新后的数据写入新文件。
  4. 元数据更新: 更新元数据以指向新的数据文件。

特点

  • OLAP 读取友好:

    • 数据一致性:旧文件不受写操作影响。
    • 优化查询性能:新建文件针对大规模查询优化。
    • 避免碎片化:每次修改生成新文件。
  • OLAP写不友好:

    • 高 I/O 开销:需重写整个文件。
    • 长延迟:因需要重写文件和更新元数据。
  • 对 Flink 流式处理不友好:

    • 实时性差:新文件生成和元数据更新延迟。
    • 高延迟读取:处理新文件增加复杂性。

Merge-On-Read 模式 (MOR)

特点

  • 仅适用于设置主键的 v2 表。

工作机制

  • 读取和写入操作:

    • 读取现有记录并写入新文件。
    • 删除文件记录待删除行,数据文件存储新或更新行。
  • 追加机制:

    • 仅追加新文件,不重写整个数据文件。

性能特点

  • 写友好:

    • 优化写操作:追加新文件降低写操作成本。
    • 适合频繁数据更新的用例。
  • OLAP 查询性能:

    • 可能较慢:因合并读取增加计算开销。
  • Flink 流处理友好:

    • 追加特性适应流处理框架,确保高效数据摄取和流读取。

http://www.kler.cn/a/389324.html

相关文章:

  • ❤React-JSX语法认识和使用
  • Ai创作新风标!仅需三步,利用ai工具免费制作抖音爆款的动物融合视频(含完整的步骤)
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】约束布局
  • 洞察鸿蒙生态,把握开发新机遇
  • 【韩老师零基础30天学会Java 】07章 面向对象编程(基础)
  • 【深度学习】LSTM、BiLSTM详解
  • sqli-labs(第二关)
  • ThinkBook 14+ 2024 Ubuntu 触控板失效 驱动缺失问题解决
  • 腾讯自研的 Git 客户端!!【送源码】
  • vue3中使用输入框按回车键刷新页面问题
  • 零拷贝Zero Copy
  • RabbitMQ的应用
  • 【STK学习】part1-卫星轨道与Walker星座基础知识
  • 《TCP/IP网络编程》学习笔记 | Chapter 4:基于TCP的服务器端/客户端(1)
  • 信息泄露漏洞一文速通
  • Facebook vs. Google:哪个更适合你的品牌
  • rabbitMq怎么保证消息不丢失?消费者没有接收到消息怎么处理
  • MySQL_聚合函数分组查询
  • 【神经科学学习笔记】基于分层嵌套谱分割(Nested Spectral Partition)模型分析大脑网络整合与分离的学习总结
  • 无人机手势控制工作原理和算法!
  • 【笔记】开关电源变压器设计 - 工作磁通的选择原则
  • 机器学习中的两种主要思路:数据驱动与模型驱动
  • Stable Diffusion WebUI或ComfyUI下载不了huggingface?修改huggingface为国内镜像地址方法在这里
  • 计算用户订购率梧桐数据库和oracle数据库sql分析
  • 关于elementui el-radio 赋值问题
  • Redis 高并发分布式锁实战