首页/新闻资讯/正文详情

Presto 0.197 版本发布详解:查询调度修复、ORC 写入优化与资源组命名变量支持

发布时间:2026/9/24 8:28:39 来源:云帆数科 栏目:资讯中心
Presto 0.197 版本发布详解:查询调度修复、ORC 写入优化与资源组命名变量支持
Presto 0.197 版本发布详解查询调度修复、ORC 写入优化与资源组命名变量支持【免费下载链接】prestoThe official home of the Presto distributed SQL query engine for big data项目地址: https://gitcode.com/gh_mirrors/pre/prestoPresto 0.197 是 Presto 分布式 SQL 查询引擎演进历程中的一个重要里程碑版本。本指南围绕该版本发布说明release-0.197.rst展开系统讲解本次更新在通用查询执行、资源组管理、Hive/ORC 写入、CLI 与 SPI 接口层面的功能增强与问题修复。读完本文你将掌握 0.197 新增的会话属性与配置项的具体用法理解广播空间连接、命名变量资源组等新能力的底层实现并能结合源码路径进一步深入验证。一、通用查询执行General Changes改进1.1 查询调度挂起修复本次修复了当concurrent_lifespans_per_task会话属性被设置时查询调度可能出现的挂起hang问题。该属性用于控制每个 task 上并发执行的 lifespan 数量在分桶bucket感知执行等场景下使用0.197 之前某些调度组合会导致任务迟迟无法启动或完成本次更新解决了这一阻塞问题。1.2 时区相关的 TIMESTAMP 字面量解析修复当查询中的TIMESTAMP字面量对应的本地时间在 Presto JVM 的默认时区中不存在时此前会直接报错。例如若 Presto 运行在 CET 时区如Europe/Brussels而客户端会话时区为 UTC那么表达式TIMESTAMP 2017-03-26 02:10:00就会触发失败——因为该本地时间恰好落在夏令时切换的时间空洞中。0.197 修复了此类边界情况下的字面量处理逻辑。1.3 谓词推断与下推增强symbol IN subquery谓词扩展了对于查询中使用IN子查询谓词的谓词推断predicate inference与下推pushdown能力让优化器能更充分地利用子查询结果约束外层查询。column IN values list谓词支持在 values list 中的值需要类型转换casting以匹配column类型时进行谓词下推。这意味着类似WHERE int_col IN (1, 2, 3)这类隐式转换场景也能被优化器识别并下推到数据源减少不必要的数据传输。1.4 函数性能优化与新增min/max优化避免不必要的对象创建从而降低 GC垃圾回收开销。相关实现位于 presto-main-base 的聚合函数代码中通过复用可写对象减少堆分配压力。ST_XMin、ST_XMax、ST_YMin、ST_YMax性能优化这些地理边界函数在 0.197 中得到加速。sequence函数新增DATE变体此前sequence()仅支持时间戳timestamp与整数类型0.197 为其增加了DATE参数重载。从 SequenceFunction.java 的源码可以看到三个新增入口sequenceDateDefaultStep默认步长 1 天、sequenceDateDayToSecond步长为天到秒的 interval与sequenceDateYearToMonth步长为年到月的 interval例如SELECT sequence(DATE 2020-01-01, DATE 2020-01-05)即可生成按天递增的日期序列。新增ST_IsSimple地理空间函数用于判断一个几何对象是否为简单几何即不自相交。实现在 GeoFunctions.java以ScalarFunction(ST_IsSimple)注解注册输入GEOMETRY类型返回BOOLEAN。1.5 广播空间连接Broadcast Spatial Joins0.197 新增了对广播空间连接的支持。传统空间连接依赖空间索引进行本地匹配而广播空间连接会把小表构建侧的几何数据以广播形式分发给各个 worker配合 SpatialIndexBuilderOperator 构建的空间索引如PagesRTreeIndex使用的 R-Tree在本地完成谓词求值适合小几何表与大数据集连接的场景可显著减少跨节点洗牌开销。二、资源组Resource Groups变更2.1 调度权重的配置校验0.197 调整了资源组策略resource group policy中权重scheduling weight的配置校验规则现在要求一个资源组下要么所有子组都配置了调度权重要么全部没有配置避免部分子组有权重、部分没有时出现不确定的调度行为。2.2 源与用户正则中的命名变量新增了在 source 和 user 正则表达式中使用命名变量的能力变量可用于参数化资源组名称。例如在资源组选择器配置中可以把正则捕获组命名并引用到资源组的名称模板里从而实现按用户或来源动态路由到不同资源组。相关选择器与匹配逻辑位于 presto-main-base 的资源组管理模块中。2.3 DB 资源组精确匹配选择器可选字段对于基于数据库DB存储的资源组精确匹配exact match选择器本次支持了可选字段即匹配条件中的某些字段可以留空不再要求所有字段都必须提供提升了选择器配置的灵活性。三、Hive 连接器变更3.1 分区统计信息读取修复修复了读取 Hive 分区统计信息时未设置字段unset fields的问题。此前未设置的字段会被错误地解释为数值 0导致统计信息失真并可能影响 CBO基于成本的优化决策0.197 起未设置字段将保持未知语义。3.2 优化版 ORC 写入器Optimized ORC Writer多项修复单文件超过 2GB 的整数溢出修复此前使用优化版 ORC 写入器写出大于 2GB 的单文件时会发生整数溢出本次修复了该问题。系统内存核算修正现在系统内存system memory核算会将 stripe 统计信息大小stripe statistics size与写入器校验大小writer validation size一并计入避免内存估算偏低。压缩缓冲区动态分配优化版 ORC 写入器的压缩缓冲区改为动态分配避免不必要的内存占用并新增配置属性hive.orc.writer.max-compression-buffer-size限制缓冲区的最大尺寸。3.3 新增 ORC 相关配置与会话属性0.197 围绕 ORC 写入引入了三个关键的调优入口名称类型说明hive.orc.writer.max-compression-buffer-size配置属性优化版 ORC 写入器压缩缓冲区的最大尺寸限制。定义于 OrcFileWriterConfig.java 的setMaxCompressionBufferSize方法orc_optimized_writer_max_stripe_size会话属性优化版 ORC 写入器允许的单个 stripe 最大尺寸用于在查询级别按需调整。定义于 HiveSessionProperties.java默认值取自orcFileWriterConfig.getStripeMaxSize()orc_string_statistics_limit会话属性写出 ORC 文件时字符串统计信息的大小上限超过该限制则丢弃字符串统计信息以控制统计信息的内存与文件开销。定义于 HiveSessionProperties.java默认值来自orcFileWriterConfig.getStringStatisticsLimit()其中hive.orc.writer.max-compression-buffer-size的默认值定义在OrcFileWriterConfig中并通过Config注解绑定配套的单测见 TestOrcFileWriterConfig.java读者可在该测试中查看各项默认值的具体数值。会话属性可通过如下方式使用-- 设置单个 stripe 的最大尺寸为 64MB SET SESSION orc_optimized_writer_max_stripe_size 64MB; -- 设置字符串统计信息上限为 1MB SET SESSION orc_string_statistics_limit 1MB;3.4 视图属主动态化视图view的属主改为在查询时从 metastore 返回的视图属主为准而不再固定为创建视图的用户。这意味着可以通过修改 metastore 中视图的属主信息来改变视图的执行权限归属。四、CLI 变更修复了 CLI 在与 Presto Server 通信失败时的挂起hang问题。此前网络异常时 CLI 可能一直阻塞等待响应0.197 起会及时感知连接失败并返回错误信息避免交互终端假死。五、SPI 变更5.1 连接器会话属性随元数据调用传递执行SHOW语句或查询information_schema时发起的连接器元数据metadata调用现在会携带连接器会话属性connector session properties保证元数据查询与数据查询在会话上下文上保持一致。5.2 查询完成事件增加 GC 信息QueryCompletedEvent中新增了查询运行期间发生的 Full GC完整垃圾回收次数与耗时统计便于通过事件监听器分析查询性能与 JVM 压力。5.3 资源组管理器接口重构ResourceGroupManager接口新增match()方法同时移除了getSelectors()方法与ResourceGroupSelector接口。原SelectionContext类更名为SelectionCriteria表示匹配的输入条件并新建SelectionContext类作为match()方法的返回值其中包含资源组 IDresource group ID与由管理器定义的上下文字段context field。这一改动将匹配条件与匹配结果清晰分离。5.4 视图属主来源扩展ConnectorViewDefinition在携带视图属主信息时将优先使用其中的属主view owner字段与前述 Hive 侧视图属主动态化相呼应。六、升级建议0.197 涉及 SPI 层接口变更ResourceGroupManager接口调整、SelectionContext重命名因此使用自定义资源组管理器或依赖这些 SPI 类的插件需要同步适配后再升级。对于 Hive 连接器使用者建议在升级后结合hive.orc.writer.max-compression-buffer-size与两个新增会话属性重新评估 ORC 写入作业的内存与文件大小表现对于地理空间分析用户ST_IsSimple与广播空间连接可直接用于简化几何自相交校验与加速空间关联查询。【免费下载链接】prestoThe official home of the Presto distributed SQL query engine for big data项目地址: https://gitcode.com/gh_mirrors/pre/presto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

DD驱动级键鼠模拟:绕过UIPI与反作弊的Windows底层输入方案
DD驱动级键鼠模拟:绕过UIPI与反作弊的Windows底层输入方案

1. 项目概述:为什么你需要真正理解DD驱动级键鼠模拟DD(DirectInput Driver)不是某个开源库的缩写,而是指一套基于Windows内核驱动层实现的、绕过用户态API直接与硬件交互的键鼠模拟技术体系。它最早由国内某安全与自动化测试团队在… · 2026/9/23 1:07:28

金航数码Java笔试题解析:集合、并发与Spring事务高分指南
金航数码Java笔试题解析:集合、并发与Spring事务高分指南

简介:金航数码Java初级笔试题是一份面向初级Java开发岗位笔试与基础语法复习的精选题目合集。文档以20道单项选择题系统覆盖循环控制、字符串拼接、标识符命名、抽象方法声明、继承规则、数组与Object类型转换、异常处理流程等核心考点;并从do-while边界… · 2026/9/23 1:07:28

软考高项备考本质:构建可验证的项目管理能力闭环
软考高项备考本质:构建可验证的项目管理能力闭环

简介:本资源是面向2025年软考高级「信息系统项目管理师」考生的系统性备考全攻略,聚焦机考改革后的综合知识、案例分析与论文写作三科应试策略,解决考生对新考试形式、时间节点、知识体系覆盖及分阶段复习路径的普遍困惑。资源为1个1.03MB的D… · 2026/9/23 1:07:28

learn-harness-engineering 项目 04 实战:以运行时反馈与架构约束修正 Agent 行为——增量索引的可观测性工程
learn-harness-engineering 项目 04 实战:以运行时反馈与架构约束修正 Agent 行为——增量索引的可观测性工程

【免费下载链接】learn-harness-engineering Harness engineering beginner tutorial, from 0 to 1 项目地址: https://gitcode.com/gh_mirrors/le/learn-harness-engineering 点击查看 免费下载 本篇是 learn-harness-engineering 教程中「Project 04: Runtime Fe… · 2026/9/24 8:28:31

LPDDR4X的VDDQ为什么是0.6V?电源设计的几个坑
LPDDR4X的VDDQ为什么是0.6V?电源设计的几个坑

做DDR硬件设计,电源是另一个容易被忽略的环节。很多人DDR信号调得不错,结果一上电就不稳定,查了半天发现是电源纹波太大,或者电压精度不够。这篇文章讲讲LPDDR4X的电源设计要点,特别是VDDQ这个0.6V的电源。一、LPDDR4X… · 2026/9/24 8:28:25

从零构建股票回测系统:架构设计、成交模拟与绩效分析实战
从零构建股票回测系统:架构设计、成交模拟与绩效分析实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 8:28:18

AI Agent开发课怎么选?从LLM到Agent系统设计的完整学习路径
AI Agent开发课怎么选?从LLM到Agent系统设计的完整学习路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 8:28:06

昇腾AscendC中TBuf InitBuffer报错507035根因解析
昇腾AscendC中TBuf InitBuffer报错507035根因解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 8:27:35

AI嵌入式部署:让传统PLC原生运行轻量级AI模型
AI嵌入式部署:让传统PLC原生运行轻量级AI模型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 8:27:22

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码