dremio HomeFileSystemStoragePlugin简单介绍

使用过dremio 的同学应该了解dremio 对于每个用户会支持一个@ 的导航(小房子标记)

参考接口效果

rest api 请求的,会包含一个containerType home 的就是HomeFileSystemStoragePlugin 产生的文件信息

 

 

HomeFileSystemStoragePlugin 接口定义

从下图可以看出,home 文件系统可能会是一个分布式文件系统(比如s3)而且可能会支持iceberg ,当前对于分布式文件系统支持aws,s3,azure,gcs。。。
当然本地的nas 也是可以的,而且本地文件系统也是可以的(伪分布式文件系统)

 

 

 

 

接口集成

  • CatalogResource
 
 @GET
  public ResponseList<? extends CatalogItem> listTopLevelCatalog(@QueryParam("include") final List<String> include) {
    return new ResponseList<>(catalogServiceHelper.getTopLevelCatalogItems(include));
  }

数据获取处理

public List<? extends CatalogItem> getTopLevelCatalogItems(final List<String> include) {
    Preconditions.checkNotNull(include);
 
    List<CatalogItem> topLevelItems = new ArrayList<>();
 
    try {
     // home 
      HomeConfig homeForCurrentUser = getHomeForCurrentUser();
      topLevelItems.add(CatalogItem.fromHomeConfig(homeForCurrentUser));
    } catch (NamespaceException e) {
      // if for some reason we can't find a home space, log it but keep going
      logger.warn("Failed to find home space for user [{}]", context.getUserPrincipal().getName());
    }
 
   // space 
    for (SpaceConfig spaceConfig : namespaceService.getSpaces()) {
      topLevelItems.add(CatalogItem.fromSpaceConfig(spaceConfig));
    }
 
   // source 
    for (SourceConfig sourceConfig : sourceService.getSources()) {
      topLevelItems.add(CatalogItem.fromSourceConfig(sourceConfig));
    }
 
    return applyAdditionalInfoToContainers(topLevelItems, include.stream()
        .map(CatalogServiceHelper.DetailType::valueOf)
        .collect(Collectors.toList()));
  }

HomeFileSystemStoragePlugin 额外的能力

home 也支持文件的上传,下载以及更新(包含文件夹),同时也支持format 处理,支持sql 查询
当然这些是基于rest api 的,同时利用了HomeFileTool 工具,提供的文件操作能力,具体rest api
参考HomeResource.java

说明

dremio 将home 设计会一个独立的文件系统是比较有意义的,可以实现用户自定义数据的上传可以与其他source 以及space 的数据进行vds 的处理,实现数据
的自助能力

参考资料

https://github.com/dremio/dremio-oss/blob/d41cb52143b6b0289fc8ed4d970bfcf410a669e8/dac/backend/src/main/java/com/dremio/dac/homefiles/HomeFileSystemStoragePlugin.java
https://github.com/dremio/dremio-oss/blob/d41cb52143b6b0289fc8ed4d970bfcf410a669e8/dac/backend/src/main/java/com/dremio/dac/homefiles/HomeFileConf.java
https://github.com/dremio/dremio-oss/blob/d41cb52143b6b0289fc8ed4d970bfcf410a669e8/dac/backend/src/main/java/com/dremio/dac/api/CatalogResource.java
https://github.com/dremio/dremio-oss/blob/d41cb52143b6b0289fc8ed4d970bfcf410a669e8/dac/backend/src/main/java/com/dremio/dac/resource/HomeResource.java

posted on 2022-10-17 22:58  荣锋亮  阅读(38)  评论(0编辑  收藏  举报

导航