dremio QueryContext 简单说明
QueryContext 包含了查询相关的一些信息,官方代码注释说应该重名为PlanningContext,主要是在fragment contexts 中使用
接口扩展
如下图,实现了ResourceSchedulingContext以及OptimizerRulesContext
主要实例化的地方
- Foremand
实际sql 执行部分,AttemptManager 创建
protected AttemptManager newAttemptManager(AttemptId attemptId, UserRequest queryRequest,
AttemptObserver observer, UserSession session, OptionProvider options,
Cache<Long, PreparedPlan> preparedPlans, PlanCache planCache,
Predicate<DatasetConfig> datasetValidityChecker, CommandPool commandPool, PartitionStatsCache partitionStatsCache) {
final QueryContext queryContext = new QueryContext(session, sabotContext, attemptId.toQueryId(),
queryRequest.getPriority(), queryRequest.getMaxAllocation(), datasetValidityChecker, planCache, partitionStatsCache);
return new AttemptManager(sabotContext, attemptId, queryRequest, observer, options, preparedPlans,
queryContext, commandPool, maestroService, jobTelemetryClient, ruleBasedEngineSelector,
queryRequest.runInSameThread());
}
- 反射服务
ReflectionServiceImpl (使用的系统用户),主要在系统进行的反射任务执行的时候使用
this.queryContext = new Supplier<QueryContext>() {
@Override
public QueryContext get() {
final UserSession session = systemSession(getOptionManager(), isNeverPromote);
return new QueryContext(session, sabotContext.get(), new AttemptId().toQueryId());
}
};
- QueryParser 解析
获取查询元数据信息,属于一个工具类
@Deprecated
public static QueryMetadata extract(SqlQuery query, SabotContext context) {
QueryParser parser = new QueryParser(context);
// extract 部分需要进行QueryContext的创建
return parser.extract(query);
}
实现的地方
- 使用的类
- 一些sql 相关的使用
基本都是关于sql 操作相关的, 目前看有不少企业版特性使用到,因为QueryContext 包含了不少相关查询执行需要的信息
说明
QueryContext主要是进行fragment 相关处理使用到,QueryContext提供了关于调度以及优化相关一些东西,整体算是一个方便的工具context
参考资料
sabot/kernel/src/main/java/com/dremio/exec/ops/QueryContext.java
sabot/kernel/src/main/java/com/dremio/exec/work/protector/Foreman.java
services/accelerator/src/main/java/com/dremio/service/reflection/ReflectionServiceImpl.java
sabot/kernel/src/main/java/com/dremio/exec/util/QueryVersionUtils.java
dac/backend/src/main/java/com/dremio/dac/explore/QueryParser.java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2023-03-27 minio server pool 进行集群扩容测试试用
2023-03-27 mountpoint-s3 rpm 包
2023-03-27 mountpoint-s3 一些集成玩法
2023-03-27 mountpoint-s3 linux 构建一些问题
2023-03-27 mountpoint-s3 aws 开源的基于fuse 的高性能s3 挂载本地文件系统客户端
2022-03-27 coolify heroku & netlify 可选开源方案
2022-03-27 supertokens autho firebase auth aws cognito 开源替换方案