一、问题描述
在iceberg rewrite时报错:org.apache.iceberg.exceptions.ValidationException: Cannot commit, found new delete for replaced data file
看信息像是对于要删除的DataFile,有新的DeleteFile作用于它,不应该直接删除DataFile。但是我们很明确并没有DeleteFile作用于其上。
排查后发现问题所在,针对Position-delete File是否作用于DataFile的判断如下。可以看出是根据DeleteFile的metrics中的lowBounds和upperBounds来确定DataFile的文件路径是否在该DeleteFile
在配置中metrics的默认长度是16,当我们仓库的路径较长时,所存的文件路径不是完整的路径,那么metrics里面的信息就失去了作用,就会出现判断出错的情况。
因此我们可以改变表的这个属性,以达到保存的metrics信息完整,下面有两种方式
--全表
alter table table set tblproperties ( 'write.metadata.metrics.default'='full' );//修改所有metrics的长度都不作限制
--某个字段
alter table table set tblproperties ( 'write.metadata.metrics.column.col123'='full' );//只针对col123这个字段统计值不做限制
原文链接:https://blog.csdn.net/qq_20834437/article/details/126359925