当前位置: 首页 > 工具软件 > Delta Lake > 使用案例 >

Delta Lake 并发控制(17)

洪胤
2023-12-01

Delta Lake 并发控制

Delta Lake 提供了读写之间ACID 的语义保证,这意味着:

  1. 对于支持的存储系统,跨多个集群的多个写入可以同时修改表分区并查看表的一致快照视图,并且这些写入有串行顺序。
  2. 读取可以继续看到 Apache Spark 作业开始时使用的表的一致快照视图,即使在作业期间修改了表也是如此。

乐观并发控制

Delta Lake 使用乐观并发控制来提供写入之间的事务保证。 在这种机制下,写操作分为三个阶段:

  1. 读取:读取(如果需要)表的最新可用版本,以确定哪些文件需要修改(即重写)。
  2. 写入:通过写入新数据文件来暂存所有更改。
  3. 验证和提交:在提交更改之前,检查提交的更改是否与自读取快照以来可能已同时提交的任何其他更改冲突。 如果没有冲突,则所有暂存的更改都将作为新的版本化快照提交,并且写入操作成功。 但是,如果存在冲突,写入操作将失败并出现并发修改异常,而不是像 Parquet 表上的写入操作那样破坏表。

写入冲突

下表描述了哪些写操作对可能发生冲突。 压缩是指将选项 dataChange 设置为 false ,也就是对写入的文件进行压缩操作。

INSERT UPDATE, DELETE, MERGE INTO COMPACTION
INSERT Cannot conflict </
 类似资料: