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

posted on   荣锋亮  阅读(13)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用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 开源替换方案

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示