FileDatasetHandle 是DatasetHandle的扩展,核心是对于文件系统类的处理(dremio 对于文件系统的支持主要是基于hdfs)
同时支持对于不同表格式的处理(delta lake,iceber,parquet),单独说明FileDatasetHandle主要是因为此实现比较重要
dremio 不少文件的处理都和此有关联
FileDatasetHandle的一些功能
- 配置选项
关于支持的最大文件数,excel 文件数。。。 - 获取数据集的元数据getDatasetMetadata
- 获取分片的chunks listPartitionChunks
- 签名信息 provideSignature
- 工具类checkMaxFiles(只有在外部存储的时候需要),getMaxFilesLimit (每个格式插件有自己的限制,默认应该使用格式插件的,只有在不能确定格式的时候使用),checkMultifileStatus(检查文件是否自上次去读之后有变动,基于了缓存以及FileSystem 的getFileAttributes 进行对比)
- 元数据校验 metadataValid
子类
可以看出不少关于湖仓表格式的都实现了此接口
使用的类
- 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