dremio 24 版本对于表优化的处理
dremio 24 版本开始支持表优化,主要是对于iceberg的表优化
机制简单说明
dremio 认为256M 是一个很不错的优选大小,其他的认为就是过小后者过大
参考图
额外的能力
支持基于路由的job处理,当然对于社区版是不行的,需要自己扩展
一些限制
- 一次只能运行一个任务
- 当前不支持delete 排序,以及元数据的重写
内部代码简单说明
这部分只是简单看了下,没有仔细研究
主要是对于基于文件的存储扩展支持了优化FileSystemRulesFactory 类中 主要是对于物理规则的添加
case PHYSICAL:
return ImmutableSet.<RelOptRule>of(
new IcebergMetadataFilesystemScanPrule(pluginType, optimizerContext),
new EasyFilesystemScanPrule(pluginType),
new ParquetFilesystemScanPrule(pluginType),
new IcebergFilesystemScanPrule(pluginType, optimizerContext),
new DeltaLakeFilesystemScanPrule(pluginType, optimizerContext),
ConvertCountToDirectScan.getAggOnScan(pluginType),
ConvertCountToDirectScan.getAggProjOnScan(pluginType),
new TableFilesFunctionScanPrule(pluginType),
new FileSystemTableOptimizePrule(optimizerContext)
);
参考资料
sabot/kernel/src/main/java/com/dremio/exec/planner/OptimizePlanGenerator.java
sabot/kernel/src/main/java/com/dremio/exec/planner/physical/TableOptimizePruleBase.java
sabot/kernel/src/main/java/com/dremio/exec/store/dfs/FileSystemRulesFactory.java
sabot/kernel/src/main/java/com/dremio/exec/planner/sql/handlers/query/OptimizeHandler.java
sabot/kernel/src/main/java/com/dremio/exec/planner/sql/handlers/query/OptimizeOptions.java
sabot/kernel/src/main/java/com/dremio/exec/planner/sql/parser/SqlOptimize.java
sabot/kernel/src/main/java/com/dremio/exec/planner/physical/FileSystemTableOptimizePrule.java
https://docs.dremio.com/software/data-formats/apache-iceberg/optimizing/
https://docs.dremio.com/software/sql-reference/sql-commands/apache-iceberg-tables/optimize-table/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2022-02-12 hive metadata 容器镜像
2022-02-12 lakefs metadata 集成
2022-02-12 lakefs 周边生态集成
2022-02-12 lakefs 监控
2022-02-12 lakefs hooks 试用
2021-02-12 几个开源的clickstream 分析工具
2021-02-12 partiql 学习一 试用