dremio 系统内部存储插件与自定义存储插件加载的区别
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2022-01-06 oceanbase timeout 问题
2022-01-06 juicefs csi 集成试用
2021-01-06 grafana tempo 分布式追踪框架学习试用
2021-01-06 synthetic-load-generator 一个不错的opentracing trace && metrics && logs 生成工具
2021-01-06 记一次php.ini配置不合理造成系统加载偏慢问题
2019-01-06 使用nexus 管理pip 私有包
2018-01-06 让nodejs 支持 es6 import