Iceberg Native核心功能
Iceberg Native加速层主要提供了三大核心功能:向量化读取加速、异步写入加速和Iceberg Native Compaction。
向量化读取加速
Native Layer 的读取加速依托于 DataFusion 的向量化执行能力。针对 Iceberg v2和v3表支持的三种删除文件类型,Native Layer已实现全面兼容,具体支持的文件类型清单请参见表1 Native Layer支持的文件类型。
| 类型 | 版本 | 核心机制 | 读性能 | 写性能 | 存储开销 |
|---|---|---|---|---|---|
| 位置删除(Position Delete) | v2 | 文件路径 + 行号匹配 | 中等:行号匹配过滤,需遍历删除文件行号 | 中等:需定位行号,生成行号记录 | 中等:行号 + 文件路径为明文,占用一定空间 |
| 等值删除(Equality Delete) | v2 | 主键等值谓词匹配 | 较差:全表行级主键匹配,无索引时扫描开销大 | 优秀:仅记录主键值,无需定位行 / 文件,写入快 | 小:仅存储主键值,列数少、数据量小 |
| 向量删除(Deletion Vector) | v3 | 位图(Bitmap)位运算 | 优秀:位图位运算过滤,跳过行的效率极高 | 中等:需合并历史位图,生成新位图 | 极小:位图紧凑编码,按 bit 存储,空间利用率最高 |
Iceberg v3引入的Deletion Vector是位置删除的升级版,采用位图紧凑存储,一个删除文件专属一个数据文件(一对一),位运算过滤效率极高,空间利用率也极高。Native Layer建议用户从位置删除迁移到向量删除,以获得最佳读取性能。
异步写入加速
Native Layer的写入加速核心是利用Arrow2 AsyncWriter接口实现高性能 Parquet异步写入。写入接口支持丰富的Parquet参数配置,具体请参见表2 Arrow2写入接口Parquet参数配置。
Iceberg Native Compaction
Compaction是Iceberg运维的核心操作,用于合并小文件、优化查询性能。整个合并过程全部在Native层执行,不涉及数据对象跨语言的所有权转移,避免了JNI边界的数据复制开销,性能提升可达1-2倍。