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 2024-02-19 08:01  荣锋亮  阅读(7)  评论(0编辑  收藏  举报

导航