英文原文:https://hudi.apache.org/blog/hudi-indexing-mechanisms/
Apache Hudi使用索引来定位更删操作所在的文件组。对于Copy-On-Write表,索引能加快更删的操作,因为避免了通过连接整个数据集来决定哪些文件需要重写。对于Merge-On-Read表,这个设计,对于任意给定的基文件,能限定要与其合并的记录数量。具体地,一个给定的基文件只需要和其所包含的记录的更新合并。相比之下,没有索引的设计(比如Apache Hive ACID[1]),可能会导致需要把所有基文件与所有更删操作合并。
从高角度看,索引把一个记录的键加一个可选的分区路径映射到存储上的文件组ID(更多细节参考这里[2])。在写入过程中,我们查找这个映射然后把更删操作导向基文件附带的日志文件(MOR表),或者导向最新的需要被合并的基文件(COW表)。索引也使得Hudi可以根据记录键来规定一些唯一性的限制。

记录更新(黄色块)和基文件(白色块)合并消耗的对比
目前Hudi已经支持了几种不同的索引机制,并且在工具库
Apache Hudi 使用索引来加速数据更删操作,提供Copy-On-Write和Merge-On-Read表的高效管理。文章介绍了Hudi的几种索引类型,包括Bloom、Index和HBase Index,并针对事实表的延迟更新、事件表的去重和维度表的随机更删等场景讨论了索引的选择。未来,Hudi将引入更快的布隆索引和记录层索引,以提升查询效率。
订阅专栏 解锁全文
1435

被折叠的 条评论
为什么被折叠?



