更新时间:2025-08-25 GMT+08:00
并发数据修改冲突
在并发写入Iceberg表时,通常会遇到两类冲突:并发修改数据冲突、乐观锁并发提交冲突。本文介绍并发数据修改冲突。
当出现以下并发作业时,可能会产生数据冲突,从而导致作业失败:
- 对同一分区数据并发执行DML操作,例如对同一分区执行Update/Delete/Insert Overwrite/Insert操作。
- Compaction与DML操作并发执行。
目前Iceberg只支持批处理场景,当执行Insert Overwrite操作时,可能会出现以下冲突:
- data数据冲突:如果为分区表,如果在检测数据冲突时,识别到insert overwrite涉及的分区有其他操作提交后产生的新的data文件,则检测为数据冲突发生;如果为非分区表,如果在检测数据冲突时,识别到有任何其他操作提交后产生的新的data文件,则检测为数据冲突发生。
- delete数据冲突:如果为分区表,如果在检测数据冲突时,识别到insert overwrite涉及的分区有其他操作删除了data文件、新增了delete文件,则检测为数据冲突发生;如果为非分区表,如果在检测数据冲突时,识别到有其他操作删除了data文件、新增了delete文件,则检测为数据冲突发生。
父主题: 如何处理Iceberg表并发冲突