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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2021-10-17 nomad-pack nomad的仓库特性
2021-10-17 zalando 最新关于微前端的一些实践文章
2021-10-17 opencomponents web 集成
2021-10-17 opencomponents 私服minio 模式运行
2021-10-17 opencomponents 快速部署前端组件的工具
2020-10-17 waypoint hashicorp 团队新开源的跨多平台的构建部署&&发布工具
2020-10-17 pgenv 一个不错的postgres 多版本管理工具