FileDatasetHandle 是DatasetHandle的扩展,核心是对于文件系统类的处理(dremio 对于文件系统的支持主要是基于hdfs)
同时支持对于不同表格式的处理(delta lake,iceber,parquet),单独说明FileDatasetHandle主要是因为此实现比较重要
dremio 不少文件的处理都和此有关联

FileDatasetHandle的一些功能

  • 配置选项 
    关于支持的最大文件数,excel 文件数。。。
  • 获取数据集的元数据getDatasetMetadata
  • 获取分片的chunks listPartitionChunks
  • 签名信息 provideSignature
  • 工具类checkMaxFiles(只有在外部存储的时候需要),getMaxFilesLimit (每个格式插件有自己的限制,默认应该使用格式插件的,只有在不能确定格式的时候使用),checkMultifileStatus(检查文件是否自上次去读之后有变动,基于了缓存以及FileSystem 的getFileAttributes 进行对比)
  • 元数据校验 metadataValid

子类

可以看出不少关于湖仓表格式的都实现了此接口

dremio FileDatasetHandle 简单说明_子类

使用的类

  • HomeFileSystemStoragePlugin
  • FormatPlugin
  • CatalogImpl
  • MFunctionVersionedSourceMetadata
  • FileSystemPlugin
  • EasyFormatPlugin
  • AccelerationStoragePlugin

说明

dremio 对于文件系统的表格式读取,不少都会使用到FileDatasetHandle的一些特定子类,了解FileDatasetHandle的一些功能还是比较有意义的

参考资料

connector/src/main/java/com/dremio/connector/metadata/DatasetHandle.java
sabot/kernel/src/main/java/com/dremio/exec/store/dfs/FileDatasetHandle.java
sabot/kernel/src/main/java/com/dremio/exec/store/dfs/FormatPlugin.java
dac/backend/src/main/java/com/dremio/dac/homefiles/HomeFileSystemStoragePlugin.java
services/accelerator/src/main/java/com/dremio/service/reflection/materialization/AccelerationStoragePlugin.java