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

posted on   荣锋亮  阅读(13)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用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 工作原理

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示