dremio DatasetHandle 简单说明
DatasetHandle 主要是关于dataset handle 处理的,不同存储插件会有不同的具体实现,同时不同的表格式也会有不同的实现(iceberg,parquet)
功能简单介绍
主要是关于dataset如何处理的handle,实际的实现会包含一些上下文信息,当进行其他api 调用的时候 metadata 会有开销比较大的操作
同时获取dataset handles 的时候也会实现到此类,同时回去datasetstats 的服务也会使用到此类,同时注意进行状态处理的时候应该使用
比较小的内存,dremio 的存储插件中的 listDatasetHandles,getDatasetHandle,getDatasetMetadata方法会使用具体的实现(不同存储插件会有不同的实现)
- 默认接口定义
默认定义就包含一个方法,就是获取dataset 的实体路径
public interface DatasetHandle extends Unwrappable {
/**
* Get the path to the dataset.
*
* @return path to dataset, not null
*/
EntityPath getDatasetPath();
}
参考实现子类
以下是简单列出部分,实际的实现可以查看详细源码实现
使用
上边也简单介绍了,dremio 不少类会使用到,以下是一个简单的介绍
- DatasetHandleListing
主要实现需要返回一个可迭代的handles
Iterator<? extends DatasetHandle> iterator() throws ConnectorException;
- SourceMetadata
获取指定dataset 路径的handle以及getDatasetMetadata - SupportsListingDatasets
获取datasets 的handles 以及 - 存储插件中的getDatasetHandle
主要获取dataset 的 handle ,实际上是SourceMetadata 接口的一个实现 - 存储插件中的listDatasetHandles
是SupportsListingDatasets 接口的是一个实现 - 存储插件中的getDatasetMetadata
主要获取dataset 的元数据信息,实际上是SourceMetadata 接口的一个实现 - SupportsUnlimitedSplits
是否支持无限制splits 类 - MFunctionMetadata
表相关maco 操作使用的handle - CatalogImpl 实现
实际上是一个间接的使用,使用了内部的使用的MFunctionMetadata - DatasetManager
属于间接调用,使用了内部的存储插件获取handle信息
说明
以上只是一个简单的说明,实际使用到DatasetHandle 的地方还是比较多的,详细的可以参考源码,目前的设计我们每个存储插件都会使用到此类的一些实现
参考资料
sabot/kernel/src/main/java/com/dremio/exec/store/ischema/InfoSchemaStoragePlugin.java
sabot/kernel/src/main/java/com/dremio/exec/store/ischema/InformationSchemaTable.java
connector/src/main/java/com/dremio/connector/metadata/extensions/SupportsListingDatasets.java
connector/src/main/java/com/dremio/connector/metadata/SourceMetadata.java
sabot/kernel/src/main/java/com/dremio/exec/catalog/MFunctionMetadata.java
connector/src/main/java/com/dremio/connector/metadata/DatasetHandle.java
sabot/kernel/src/main/java/com/dremio/exec/catalog/DatasetManager.java
sabot/kernel/src/main/java/com/dremio/exec/catalog/CatalogImpl.java
connector/src/main/java/com/dremio/connector/metadata/EntityPath.java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2023-02-19 tsup 简单快速的typescript库打包工具
2023-02-19 pgspider v0.20 之后的一些变动
2023-02-19 pgspider 发布v0.3.0 了
2022-02-19 grafana loki 2.4 简化服务部署
2021-02-19 airbyte 整体架构
2021-02-19 plop 方便的micro-generator framework
2021-02-19 jsdelivr 工作原理