hudi系列-文件系统视图(FileSystemView)

Hudi提供了表级别的文件系统视图以了解数据分布、文件状态和版本控制。包括获取最新base文件、分片信息等功能,并支持全内存、固定内存+磁盘、RocksDB等存储机制。还可通过Timeline Server实现远程管理,提供增量同步和元数据文件系统视图以提升查询性能。

hudi表的数据一直在演变过程中,存储在文件系统中的数据文件也在不断增加和版本迭代,hudi提供了表级别的文件系统视图(filesystem view)来简单、直观地了解表中的数据分布情况、数据文件的状态和变化,以及数据的版本控制信息。文件系统视图提供了以下一些功能:

  1. 获取最新的base文件:整个表的、指定分区的、指定分区的文件组的(BaseFileOnlyViewWithLatestSlice)
  2. 获取指定分区所有base文件、获取指定分区某版本(fileId+instant)的base文件(BaseFileOnlyView)
  3. 获取最新分片信息:指定分区、指定文件组、指定分区未compact的、指定分区在某instant前的、指定分区在某instant范围的(SliceViewWithLatestSlice)
  4. 获取指定分区所有分片(SliceView)
  5. 获取指定分区所有分组、获取timeline、获取正compact的信息、获取正clustering的文件组、获取replacecommit产生的文件组(TableFileSystemView)

当然,文件系统视图持续进行着自我更新、重置,以保持最新视图。

  • hudi 0.13.1

类图

Hudi 的 Parquet 存储格式在文件裁剪方面依赖于索引机制和文件元数据管理,以实现高效的查询性能和数据过滤。文件裁剪是指在查询过程中,系统能够跳过不相关的数据文件,从而减少 I/O 操作和计算资源的消耗。以下是 Hudi Parquet 存储格式中实现文件裁剪的主要方法: ### 1. 布隆过滤器(Bloom Filter)裁剪 Hudi 利用布隆过滤器进行索引构建,特别是在使用 Bloom Index 时,能够有效裁剪掉不包含目标记录的数据文件[^3]。布隆过滤器是一种空间效率高且查询速度快的概率型数据结构,它能够快速判断某个记录键是否可能存在于某个数据文件中。如果布隆过滤器确认目标键不在某个文件中,则可以直接跳过该文件,从而减少不必要的 I/O 操作。 ### 2. 范围裁剪(Range Pruning) Hudi文件系统会根据记录键的排序特性进行范围裁剪。如果记录键是有序的(例如时间戳),Hudi 可以利用这些键的范围信息来构建区间树(Interval Tree),从而在查询时快速识别出可能包含目标记录的文件集合。这种基于键值范围的裁剪方法可以显著减少参与查询的数据文件数量。 ### 3. 文件分组与文件 ID 映射 Hudi 使用记录键(record key)和分区路径(partition path)生成唯一的 hoodie key,并通过索引机制将这些键映射到对应的文件 ID(file ID)[^4]。这种映射机制确保了记录键与文件位置之间的高效查找,从而在更新和删除操作中快速定位到相关的数据文件,避免扫描所有文件。 ### 4. 文件元数据管理 Hudi文件系统视图(File System View)维护了所有活跃文件的元数据信息,包括文件的创建时间、大小、键范围等[^1]。通过这些元数据信息,Hudi 可以在查询执行时快速判断哪些文件可能包含目标数据,哪些文件可以直接跳过。 ### 5. 与 Parquet 格式的列式裁剪结合 由于 Hudi 使用 Parquet 作为其底层存储格式,因此还可以利用 Parquet 自身的列式裁剪能力。Parquet 格式支持按列读取数据,查询引擎可以仅读取与查询相关的列数据,从而减少 I/O 操作并提升查询性能。 以下是一个简单的 Spark SQL 查询示例,展示如何从 Hudi 表中读取数据: ```sql -- 查询 Hudi 表中的部分数据 SELECT c_custkey, c_name, c_nationkey FROM customer_cow WHERE c_nationkey = 'CHINA'; ``` 在执行上述查询时,Hudi 会结合上述裁剪机制,快速定位并跳过不相关的 Parquet 文件,从而提升查询效率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值