drill 学习 九 drill性能优化-Metastore

尽管drill 是schema on fly 的但是,提供scehma 以及统计信息可以加速drill 数据的处理,所以drill 1.17
添加了Metastore(基于iceberg tables)

简单介绍

模式感知执行的显着优势:

  • 在计划时间:
    更好的计划优化范围。
    由于类型已知,因此可以正确估算列宽,因此可以更准确地估算成本。
    如果某些数据类型验证失败,则可以安全地提前退出。
  • 在运行时:
    SchemaChange避免异常。所有次要片段都将对该模式有一个共同的理解。

读取数据及其统计数据元数据有助于构建更有效的计划并优化查询执行:

 
最佳连接规划,两阶段聚合与一阶段聚合计划,过滤条件的选择性估计,并行化决策至关重要。

考虑到以上几点,可以通过以下方式改进现有查询处理:

存储表架构并重用
收集,存储和重用表统计信息以改进查询计划

启用Metastore

通过以下命令配置,web ui 也是可以的

SET `metastore.enabled` = true; //  会话级别 
ALTER SYSTEM SET `metastore.enabled` = true;  // 系统级别

table Metastore

table Metastore 包含了以下信息:

table schema, 列名,类型 
table 统计信息(统计信息,min,max,null,count。。。,直方图统计信息)

schema 优先级

drill 在查询计划以及执行阶段都会使用Metastore,同时drill提供了多种模式进行schema 的创建
当执行ANALYZE TABLE 命令的时候,drill 将使用如下规则:

 
基于table 函数提供的
在table 根目录提供的基于 shema file 定义的 `CREATE OR REPLACE  SCHEMA` 
基于文件数据推断的schema

分析table

参考命令,当执行完成之后我们可以在INFORMATION_SCHEMA 获取数据信息

ANALYZE TABLE `lineitem` REFRESH METADATA;

说明

以上是一个简单的介绍,详细的参考官方文档

参考资料

https://drill.apache.org/docs/using-drill-metastore/

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

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-10-05 cloudevents 通用event 描述指南
2017-10-05 fn project 试用之后的几个问题的解答
2017-10-05 fn project 扩展
2017-10-05 fn project 生产环境使用
2017-10-05 fn project 对象模型
2017-10-05 fn project AWS Lambda 格式 functions
2017-10-05 fn project 打包Function

导航

< 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
点击右上角即可分享
微信分享提示