多个数据管道能否同时合并同一增量 table 上的数据而不会导致不一致?
Can multiple data pipeline merge data on the same delta table simultaneously without causing inconsistency?
我知道 ACID 事务是执行读写时 delta lake 的重要特征之一。合并操作也是如此吗?如果两个管道尝试根据不同的条件对同一 record.Can 执行更新操作会导致任何数据不一致怎么办?
好吧,这取决于。
Delta Lake 使用 Optimistic Control 处理并发,这意味着它可能会工作 如果 你正在写入 HDFS,因为 delta 需要底层对象存储来支持“比较和交换”操作或在两个编写器试图覆盖彼此的日志条目时失败的方法,并且 HDFS 支持。
在 S3 上,this is not supported:
Delta Lake has built-in support for S3. Delta Lake supports concurrent
reads from multiple clusters, but concurrent writes to S3 must
originate from a single Spark driver in order for Delta Lake to
provide transactional guarantees. This is because S3 currently does
provide mutual exclusion, that is, there is no way to ensure that only
one writer is able to create a file.
在专有的 Delta 引擎上,Databricks 确实支持使用处理这些调用的专有服务器向 S3 写入多集群。
总结一下:
- 如果你正在写入 HDFS 应该是可能的。
- 在 S3 上,它不会工作,除非你使用的是 Delta Lake 的付费版本。
我知道 ACID 事务是执行读写时 delta lake 的重要特征之一。合并操作也是如此吗?如果两个管道尝试根据不同的条件对同一 record.Can 执行更新操作会导致任何数据不一致怎么办?
好吧,这取决于。
Delta Lake 使用 Optimistic Control 处理并发,这意味着它可能会工作 如果 你正在写入 HDFS,因为 delta 需要底层对象存储来支持“比较和交换”操作或在两个编写器试图覆盖彼此的日志条目时失败的方法,并且 HDFS 支持。
在 S3 上,this is not supported:
Delta Lake has built-in support for S3. Delta Lake supports concurrent reads from multiple clusters, but concurrent writes to S3 must originate from a single Spark driver in order for Delta Lake to provide transactional guarantees. This is because S3 currently does provide mutual exclusion, that is, there is no way to ensure that only one writer is able to create a file.
在专有的 Delta 引擎上,Databricks 确实支持使用处理这些调用的专有服务器向 S3 写入多集群。
总结一下:
- 如果你正在写入 HDFS 应该是可能的。
- 在 S3 上,它不会工作,除非你使用的是 Delta Lake 的付费版本。