首页 > 其他分享 >dremio 系统内部存储插件与自定义存储插件加载的区别

dremio 系统内部存储插件与自定义存储插件加载的区别

时间:2023-01-06 21:23:57浏览次数:41  
标签:dremio java 自定义 存储 default 插件 boolean 加载

dremio 整体包含了两大类存储扩展,系统内部使用的,以及用户开发的,

整体区别

  • 系统的目前是在dremio 自己启动的时候就会注册以及使用的,比如加速反射的,home,元数据存储插件
  • 用户自己开发的主要是通过web ui 或者api 初始化以及维护的
  • 用户以及系统存储配置的可配置性不一样,系统不能配置,类似静态,用户的可以配置,同时dremio api 以及web 管理也是通过是是否支持配置加载的

内部实际处理

  • 用户插件加载处理
public ResponseList<SourceTypeTemplate> getSourceTypes() {
  final ConnectionReader connectionReader = sabotContext.getConnectionReaderProvider().get();
  final ResponseList<SourceTypeTemplate> types = new ResponseList<>();
 
  final boolean showHive = sabotContext.getOptionManager().getOption(ALLOW_HIVE_SOURCE);
 
  for(Class<? extends ConnectionConf<?, ?>> input : connectionReader.getAllConnectionConfs().values()) {
    // we can't use isInternal as its not a static method, instead we only show listable sources,内部判断
    if (isListable(input)) {
      String sourceType = input.getAnnotation(SourceType.class).value();
      if (!showHive && "HIVE".equals(sourceType)) {
        continue;
      }
 
      if (sabotContext.getSourceVerifierProvider().get().isSourceSupported(sourceType)) {
        types.add(SourceTypeTemplate.fromSourceClass(input, false));
      }
    }
  }
 
  return types;
}

内部判断处理

private boolean isListable(Class<? extends ConnectionConf<?, ?>> clazz) {
  SourceType type = clazz.getAnnotation(SourceType.class);
  return type != null && type.configurable() && type.listable();
}
  • SourceType 注解
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface SourceType {
  String value();
  String label() default "";
  String uiConfig() default "";
  boolean configurable() default true;
  boolean listable() default true;
  boolean externalQuerySupported() default false;
  boolean previewEngineRequired() default false;
}
  • 系统插件加载处理
    以前说过,通过SystemStoragePluginInitializer 加载的,实际上是通过直接硬编码处理的

参考资料

dac/backend/src/main/java/com/dremio/dac/api/SourceResource.java
sabot/kernel/src/main/java/com/dremio/exec/store/dfs/InternalFileConf.java
dac/backend/src/main/java/com/dremio/dac/homefiles/HomeFileConf.java
services/accelerator/src/main/java/com/dremio/service/reflection/materialization/AccelerationStoragePluginConfig.java

标签:dremio,java,自定义,存储,default,插件,boolean,加载
From: https://www.cnblogs.com/rongfengliang/p/17031593.html

相关文章

  • Vue:TDesign Starter 自定义指令控制权限
    Vue支持自定义指令,具体API说明可以参考下面两个文档:Vue.directive(id,[definition])Vue自定义指令1.钩子函数Vue.directive提供了几个钩子函数,分别是:bindi......
  • 微信小程序中实现自定义省市区选择
    背景:1.小程序官方提供的省市区组件的数据与原有的数据对应不上,官方的数据太旧2.小程序重构以后没有在使用vant等框架实现过程:1.安装依赖a.微信小程序使用n......
  • (笔记)在每个 Linux 用户SSH登录时执行自定义脚本
     有些时候,我们需要在linux用户登录时执行我们自己编写的脚本,比如登录时给个友好的交互输出提示。为了实现该目的,我们有必要去了解一下linux在用户登录时执行内部shell的......
  • Kali 工具系列【3】kali Firefox浏览器下安装一些常用的渗透测试插件
    怎么做……Firefox是一个非常灵活的浏览器,非常适合用来web渗透测试,并且他默认安装在KaliLinux中。我们需要稍微定制一下,可以使用以下步骤:1. 打开Firefox,进入菜单中的附加......
  • MYSQL 创建(存储过程)定时任务
    代码如下:--查看MYSQL事件调度器:(这个调度器主要是监视一个事件是否要调用,要创建事件,必须打开调度器。)showvariableslike'event_scheduler';--创建存储过程:CREATEPROCED......
  • 如何封装一个vue的插件
    首先在toast文件夹去创建一个index.js文件,在js文件中创建一个对象,将他导出//index.jsconsttoast={}exportdefaulttoast  在main.js中导入这个文件,并且use......
  • Asp.Net Core 中IdentityServer4 授权中心之自定义授权模式
    一、前言上一篇我分享了一篇关于Asp.NetCore中IdentityServer4授权中心之应用实战的文章,其中有不少博友给我提了问题,其中有一个博友问我的一个场景,我给他解答的还不......
  • 三 docker存储和网络
    docker数据管理数据卷volumes可供一个或多个容器使用的特殊目录,可以在容器之间共享,对数据卷的修改会立即生效且不会影响镜像,与容器声明周期独立,即容器删除数据卷也可......
  • 微信开发者工具安装扩展插件教程
    第一步:打开微信开发者工具,然后点击菜单栏的设置  第二步:点击通用设置       第三步:进入设置后,点击扩展        第......
  • MTK存储说明
    @目录简介说明RAM和ROM的分配编译完后的空间查看简介MTK存储功能说明说明RAM和ROM的分配MTK项目里面,存储部分只需要关注ROM和RAM即可到对应的工程下面pro/FF741_CQ2......