这是我的第102篇原创文章
【V1与V2简介】
Iceberg在V1的格式中定义了,如何使用不可变类型的文件(Parquet、ORC、AVRO)来管理大型分析型的表,包括元数据文件、属性、数据类型、表的模式,分区信息,以及如何写入与读取。
而在V2的格式中,在V1的基础上增加了如何通过这些类型的表实现行级别的更新与删除功能。其最主要的改变是引入了delete file记录需要删除的行数据,这样可以在不重写原有(数据)文件的前提下,实现行数据的更新与删除。
【行级别删除的原理】
1. DeleteFile的表示
在V1版本中,只有DataFile的概念,即记录添加到iceberg中的行数据集。而DeleteFile(删除文件)则记录的是被删除的行的数据集。
删除行数据的方式分为两种:Equality Deletes和Position Deletes。
所谓Equality Deletes就是等值删除,指定一个或多个列的值,其中包含该列值的每一行数据都被视为已删除。例如删除id=10的数据;而Position Deletes为位置删除,删除指定文件中指定位置的行