searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

hudi系列-文件系统视图

2024-11-12 09:34:19
3
0

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)

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

类图

  1. TableFileSystemView,BaseFileOnlyView,BaseFileOnlyViewWithLatestSlice,SliceView,SliceViewWithLatestSlice几个接口定义了对外提供的功能
  2. SyncableFileSystemView定义视图的关闭、重置、同步接口
  3. AbstractTableFileSystemView是一个抽象类,实现了视图的初始化、加锁对视图进行重置和同步、及其它一些基础的公共功能。

存储机制

文件系统视图可以使用以下存储机制

  • 全内存:HoodieTableFileSystemView,相关的视图数据存储在HashMap中
  • 固定内存+磁盘:SpillableMapBasedFileSystemView继承了HoodieTableFileSystemView,相关的视图数据存储在ExternalSpillableMap中
  • RocksDB:RocksDbBasedFileSystemView,使用了内置的Rocks DB,默认的数据库文件位置在/tmp/hoodie_timeline_rocksdb下,虽然用了db进行视图数据的存储,但是在作业重启后,存储数据依然会丢失。

远程文件系统视图

文件系统视图可以通过Timeline Server提供远程管理服务,客户端可以使用代理对象(RemoteHoodieTableFileSystemView)来连接并获取远程的视图,使用远程文件系统视图时有两种方式

  • REMOTE_FIRST:如果在查询远程的文件系统视图出现问题时,将自动切换到本地的备用文件系统
  • REMOTE_ONLY:如果在查询远程的文件系统视图出现问题时,客户端将会抛出异常

其它

  • 增量同步:IncrementalTimelineSyncFileSystemView,基于timeline实现增量同步文件系统视图,通过hoodie.filesystem.view.incr.timeline.sync.enable控制开关。
  • 元数据文件系统视图:HoodieMetadataFileSystemView,当开启了元数据表,则会使用元数据文件系统视图来加速视图查询性能。

 

 

0条评论
0 / 1000
矛始
28文章数
0粉丝数
矛始
28 文章 | 0 粉丝
原创

hudi系列-文件系统视图

2024-11-12 09:34:19
3
0

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)

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

类图

  1. TableFileSystemView,BaseFileOnlyView,BaseFileOnlyViewWithLatestSlice,SliceView,SliceViewWithLatestSlice几个接口定义了对外提供的功能
  2. SyncableFileSystemView定义视图的关闭、重置、同步接口
  3. AbstractTableFileSystemView是一个抽象类,实现了视图的初始化、加锁对视图进行重置和同步、及其它一些基础的公共功能。

存储机制

文件系统视图可以使用以下存储机制

  • 全内存:HoodieTableFileSystemView,相关的视图数据存储在HashMap中
  • 固定内存+磁盘:SpillableMapBasedFileSystemView继承了HoodieTableFileSystemView,相关的视图数据存储在ExternalSpillableMap中
  • RocksDB:RocksDbBasedFileSystemView,使用了内置的Rocks DB,默认的数据库文件位置在/tmp/hoodie_timeline_rocksdb下,虽然用了db进行视图数据的存储,但是在作业重启后,存储数据依然会丢失。

远程文件系统视图

文件系统视图可以通过Timeline Server提供远程管理服务,客户端可以使用代理对象(RemoteHoodieTableFileSystemView)来连接并获取远程的视图,使用远程文件系统视图时有两种方式

  • REMOTE_FIRST:如果在查询远程的文件系统视图出现问题时,将自动切换到本地的备用文件系统
  • REMOTE_ONLY:如果在查询远程的文件系统视图出现问题时,客户端将会抛出异常

其它

  • 增量同步:IncrementalTimelineSyncFileSystemView,基于timeline实现增量同步文件系统视图,通过hoodie.filesystem.view.incr.timeline.sync.enable控制开关。
  • 元数据文件系统视图:HoodieMetadataFileSystemView,当开启了元数据表,则会使用元数据文件系统视图来加速视图查询性能。

 

 

文章来自个人专栏
hudi
17 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0