大数据数据库后端【免费下载链接】prestoThe official home of the Presto distributed SQL query engine for big data项目地址https://gitcode.com/gh_mirrors/pre/presto点击查看免费下载本指南基于 Presto 官方仓库中的 release-0.278.rst 发布说明深度梳理 Presto 0.278 版本的核心变更从 ROUND 函数溢出修复、条件聚合优化、map_subset新函数到 Delta Lake、Pinot、Hudi 等连接器的能力增强并结合仓库源码揭示各项变更的底层实现位置与配置方式。读完本文你将掌握该版本新增的系统/会话属性、安全 API、SPI 结构调整以及如何在部署与调优中正确使用这些新能力。版本概览与重要警告Presto 0.278 是 Facebook PrestoTrino 的前身在演进过程中的一个重要里程碑版本它横跨查询引擎核心、多个数据源连接器、安全体系与原生执行Native Execution等多个层面。在升级或评估该版本前有一条必须知晓的警告ROUND函数存在性能回归performance regression。该版本修复了 ROUND 因整数/双精度浮点溢出导致返回错误结果的问题但代价是引入了性能上的回退。如果你的工作负载重度依赖ROUND函数请评估升级后的性能影响release-0.278.rst 顶部 warning 部分。General Changes引擎核心的七项重要改进0.278 的通用变更集中在正确性修复、查询优化器增强、安全加固与内存管理四个方面下面逐项展开。1. ROUND 溢出修复正确性修复ROUND函数在整数/双精度溢出场景下返回错误结果的问题。此前对超出类型表示范围的数值执行ROUND可能产生未定义或错误输出本版本通过显式的溢出处理杜绝了这一类错误。结合上文警告可知这一正确性修复以一定的性能损耗为代价属于用性能换正确性的取舍。2. 聚合排序编译错误修复正确性修复了当聚合aggregation带有ORDER BY子句且输入是一个函数function时出现的编译错误。典型场景如SELECT array_agg(lower(name) ORDER BY ts) FROM t GROUP BY grp;此前此类函数调用作为聚合输入 ORDER BY的组合会触发编译失败0.278 起可正常执行。3. 条件聚合优化IF(predicate, AGG(x))重写为带 mask 的聚合这是本版本最值得关注的查询优化器改进之一。优化器现在可以在**计划层plan level**将形如IF(predicate, AGG(x))的表达式重写为带mask的聚合从而避免对整列执行聚合后再做条件过滤的开销。该优化由一个系统级属性控制属性名默认值说明optimize_conditional_aggregation_enabledfalse是否启用条件聚合优化默认关闭从源码看该开关在 FeaturesConfig.java 中定义为isOptimizeConditionalAggregationEnabled字段并提供对应的 getter/setterFeaturesConfig.java L3033-L3042实际的计划重写逻辑位于优化器规则 RewriteIfOverAggregation.java。如需启用可在config.properties中配置optimize_conditional_aggregation_enabledtrue4. 新安全 APIselectAuthorizedIdentity0.278 引入了一个新的安全 API ——selectAuthorizedIdentity用于防止潜在的安全漏洞例如通过伪造用户名fake username读取非法数据的问题。新的接口方法默认实现定义在 SPI 层AccessControl.java 与 SystemAccessControl.java签名包含Identity、AccessControlContext、userName与证书列表。配套新增配置属性permissions.authorized-identity-selection-enable用于启用该 API。在config.properties中permissions.authorized-identity-selection-enabletrue启用后系统可以基于更可信的身份信息而非仅依赖用户自报的用户名完成授权决策堵住身份伪造类攻击路径。5. HashBuilderOperator 内存回收检查在内存回收memory revoke过程中为HashBuilderOperator增加了内存限制检查避免在内存压力下因缺少校验而导致操作符超限使用内存或出现不稳定行为。这与 Presto 的内存管理与 task 级内存 revoke 机制直接相关属于稳定性加固。6. Parquet 加密列的空值掩码Null Masking为 Parquet 解密功能增加了 **null masking空值掩码**机制当该功能启用且用户被拒绝访问加密列时被拒绝的列会先从发送给 Parquet 的请求 schema 中移除在结果返回时这些列会被填充为NULL从而在不解密的前提下保护敏感数据。该功能的行为细节见下文 Hive Changes。7.approx_percentile同字段多函数合并优化新增对approx_percentile函数求值的优化同一字段上的多个approx_percentile函数会被合并为一个接收 percentile 数组的approx_percentile调用从而复用同一次分位数估算的中间状态减少重复计算。该优化由会话属性控制默认开启会话属性默认值optimize_multiple_approx_percentile_on_same_fieldtrue例如查询中的SELECT approx_percentile(x, 0.5), approx_percentile(x, 0.9), approx_percentile(x, 0.99) FROM t;会被优化为对x单次计算多个分位点显著降低统计代价。8. 外连接 NULL 键随机化以消除倾斜新增对外连接outer join的优化为 NULL 连接键添加随机化值避免大量 NULL 键聚集到同一个 worker 导致的哈希倾斜skew in NULL。该优化默认关闭可通过系统属性开启optimizer.randomize-outer-join-null-keytrue适用于连接键中 NULL 占比极高的数据倾斜场景。9. 低分区数失败重试Spark 集成新增 Spark 集成场景下的重试机制当查询因分区数过低而失败时Presto 会以增加的分区数自动重试。相关会话属性如下会话属性作用spark_retry_on_out_of_memory_higher_hash_partition_count_enabled是否启用更高哈希分区数重试机制spark_hash_partition_count_scaling_factor_on_out_of_memory内存不足时哈希分区数的放大系数这主要服务于 presto-spark 生态帮助 OOM内存不足类失败通过扩大分区并行度自动恢复。10. 新函数map_subset0.278 新增标量函数map_subset接收一个 map 和一个 key 数组返回由key 包含在给定数组中的条目组成的子 map。SELECT map_subset( MAP(ARRAY[a, b, c], ARRAY[1, 2, 3]), ARRAY[a, c] ); -- {a1, c3}其实现位于 MapSubsetFunction.java标注为ScalarFunction(map_subset)内部通过TypedSet构建待筛选的 key 集合以完成子集提取并已注册进内置函数命名空间见 BuiltInTypeAndFunctionNamespaceManager.java。11. 依赖升级Apache Iceberg从 0.14.0 升级到0.14.1影响 presto-iceberg 模块Java Topology SuiteJTS升级到1.19.0影响 presto-geospatial-toolkit 等地理空间相关模块。Delta Lake Connector Changes从只读到可写Delta 连接器在 0.278 中获得了重大能力提升改善新创建表的读取性能针对新建表通常文件布局更规整优化了读取路径新增CREATE TABLE支持Delta 连接器从纯读取演进为可建表新增外部表DROP TABLE支持可删除外部表删除元数据而非物理数据文件。这三项变更使 Delta 连接器从只读查询迈向了可管理表生命周期的阶段是 Delta 能力补全的关键一步。Filesystem Connector Changes原生执行落地 HDFS为Presto Native Execution增加了HDFS filesystem connector支持即基于 CVelox执行引擎的原生部署形态现在可以直接读取 HDFS 上的文件系统数据源相关配置可参考 presto-native-execution/etc 目录下的 catalog 配置。TPC-H Connector Changes原生执行支持与列命名约束为Presto Native Execution增加了TPC-H connector支持使得原生引擎可以运行 TPC-H 基准测试重要约束Velox 仅支持标准列命名standard column naming因此在 Java 侧必须设置连接器属性tpch.column-namingstandard否则原生执行将无法正确解析 TPC-H 的列。SPI Changes类型与错误码迁移SPI 发生了结构性调整QueryType、ErrorCode、ErrorType从presto-spi模块迁移到presto-common模块。这是一次影响所有插件/连接器的 API 变动任何直接引用这三个类的下游代码都需要更新 import 路径。对插件开发者而言升级到 0.278 时务必检查自身的ErrorCode/ErrorType引用是否仍指向 presto-spi避免编译失败。Hive ChangesParquet 统计信息修复与空值掩码开关Hive 连接器有两项变更修复 Parquet 文件统计信息损坏导致的查询失败问题当 Parquet 文件的统计信息footer statistics损坏时此前会导致查询失败本版本修复了该场景使查询能够正确回退或忽略损坏的统计信息新增会话属性控制 Parquet 空值掩码会话属性默认值说明read_null_masked_parquet_encrypted_value_enabledfalse是否启用 Parquet 加密列的空值掩码读取该会话属性与上文 General Changes 中的 Parquet null masking 对应系统属性/功能启用后再通过该会话属性在具体会话中打开被拒绝列返回 NULL的行为。Hudi Changes升级到 0.12.0将 Apache Hudi 版本升级到0.12.0影响 presto-hudi 模块以获得 Hudi 0.12 引入的读取能力、表格式兼容性与稳定性改进。Pinot Changes查询选项、类型支持与配置清理Pinot 连接器是 0.278 变更最密集的连接器涉及新增、移除、弃用与类型支持四个方面。新增查询选项配置新增 catalog 配置pinot.query-options与会话属性pinot.query_options用于为生成的 Pinot 查询设置 Pinot 查询选项Query Options例如设置 broker 查询的超时、响应限制等。从源码看该配置在 PinotConfig.java 中以queryOptions字段承载并通过Config(pinot.query-options)注解完成属性绑定PinotConfig.java L661-L667查询构造时由 PinotQueryOptionsUtils.java 将选项注入生成的 Pinot 查询。配置示例pinot.query-optionsenableNullHandlingtrue;timeoutMs30000对应会话属性pinot.query_options可实现单查询级别的覆盖。修复BYTES 类型解码修复 PinotBYTES类型的解码问题确保二进制数据读取结果正确。移除一批 catalog 与 session 配置移除 catalog 配置pinot.use-pinot-sql-for-broker-queries及对应会话配置pinot.use_pinot_sql_for_broker_queries——SQL 查询端点已是默认无需再切换pinot.allow-multiple-aggregations、pinot.thread-pool-size、pinot.min-connections-per-server、pinot.max-connections-per-server、pinot.max-backlog-per-server、pinot.idle-timeout、pinot.use-streaming-for-segment-queries等一批未使用unused配置移除会话配置pinot.ignore_empty_responses、pinot.connection_timeout。升级提示如果你的 catalog 或 session 中配置了上述被移除项升级后需要清理否则可能出现未知属性告警或报错。弃用PQL 查询端点与 Netty 服务查询弃用 Pinot PQL 查询端点默认使用SQL 查询端点弃用 Pinot netty server 查询。即连接器与 Pinot 的交互全面向 SQL/HTTP 语义收敛后续版本将彻底移除 PQL 与 Netty 查询路径。支持 BigDecimal 类型新增对 PinotBigDecimal类型的支持使高精度十进制数据在 Presto 侧能够以DECIMAL类型准确映射与计算。版本升级将 Pinot 发布版本升级到0.11.0影响 presto-pinot-toolkit 与 presto-pinot 模块以获得 Pinot 0.11 的查询能力与类型支持。Router Changes加权轮询调度Presto Routerpresto-router 模块新增加权轮询weighted round-robin调度策略在将查询路由到多个集群时可按各集群的权重分配流量实现按容量比例的负载均衡而不再局限于等权重轮询。Credits本版本的开发与发布离不开以下贡献者按首字母排序Aditi Pandit, Ahmed ElSherbiny, Ajay George, Amit Dutta, Amr Elroumy, Arjun Gupta, Arunachalam Thirupathi, Behnam Robatmili, Beinan, Chen Yang, Chunxu Tang, Deepak Majeti, Feilong Liu, Ge Gao, James Sun, Jimmy Lu, Karteek Murthy Samba Murthy, Krishna Pai, Lin Liu, MJ Deng, Masha Basmanova, Michael Shang, Milosz Linkiewicz, Naresh Kumar, Naveen Kumar Mahadevuni, Neerad Somanchi, Nizar Hejazi, Pranjal Shankhdhar, Rebecca Schlussel, Reetika Agrawal, Robert Stupp, Rohit Jain, Sacha Viscaino, Sagar Sumit, Sergey Pershin, Sergii Druzkin, Sreeni Viswanadha, Swapnil Tailor, Timothy Meehan, Todd Gao, Xiang Fu, Xinli Shang, Y Ethan Guo, abhiseksaikia, dnskr, pratyakshsharma, singcha, tanjialiang, xiaoxmeng, yingsu00。升级检查清单基于以上变更升级到 Presto 0.278 时建议逐项核对性能评估ROUND性能回归对核心查询的影响安全如需身份选择防护配置permissions.authorized-identity-selection-enabletrue并实现/启用selectAuthorizedIdentity可选优化按需开启optimize_conditional_aggregation_enabled默认关、optimizer.randomize-outer-join-null-key默认关确认optimize_multiple_approx_percentile_on_same_field默认开符合预期原生执行Native Execution 使用 TPC-H/HDFS 时Java 侧设置tpch.column-namingstandard插件兼容将QueryType/ErrorCode/ErrorType的引用从 presto-spi 迁移到 presto-commonPinot清理被移除的 catalog/session 配置切换到 SQL 查询端点按需配置pinot.query-optionsHive/Delta如需 Parquet 加密列空值掩码设置会话属性read_null_masked_parquet_encrypted_value_enabledtrueDelta 连接器已支持CREATE TABLE与外部表DROP TABLE。适用范围说明以上属性名称、默认值与行为均以当前仓库中 Presto 0.278 版本的发布说明及对应源码FeaturesConfig.java、AccessControl.java、MapSubsetFunction.java、PinotConfig.java为准后续版本可能存在属性重命名或默认值调整请以你所使用版本的实际文档为准。赞分享大数据数据库后端【免费下载链接】prestoThe official home of the Presto distributed SQL query engine for big data项目地址https://gitcode.com/gh_mirrors/pre/presto点击查看免费下载相关推荐Presto 0.220 版本特性全解析查询执行、连接器写入优化与 Verifier 改进Presto 0.220 版本特性全解析查询执行、连接器写入优化与 Verifier 改进 导读 本文基于 Presto https://link.gitco大数据数据库后端Presto 0.282 版本发布说明查询优化器新特性、array_cum_sum 函数与各连接器更新全解析Presto 0.282 版本发布说明查询优化器新特性、array_cum_sum 函数与各连接器更新全解析 本指南基于 Presto 官方仓库的 Relea大数据数据库后端Presto 0.167 版本发布解析查询引擎核心增强与安全模型演进Presto 0.167 版本发布解析查询引擎核心增强与安全模型演进 导读 Presto 0.167 是分布式 SQL 查询引擎发展历程中一个承上启下的重要版大数据数据库后端上一篇Mem0 Platform 快速上手用 mem0ai Python/TypeScript 客户端构建 AI Agent 记忆层下一篇当Chromium遇上GOST加密你的浏览器安全能有多极致创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Phoenix 实战:LangChain TypeScript 旅行规划 Agent 的追踪与评估快速上手 可观测性AI 评测LLMOpsAI 应用人工智能 【免费下载链接】phoenix AI Observability & Evaluation 项目地址: https://gitcode.com/gh_mirrors/phoenix13/phoenix 点击查看 免费下载 导读
本文基于 Phoenix 仓库中的 langchain-quickstart 示例,完整… · 2026/9/24 17:01:34
安全插件链A1 背景与现状
现代软件开发中第三方插件的广泛使用带来的安全隐患传统代码审计方法在插件链环境下的局限性Cursor编辑器及其插件生态的快速普及
安全插件链的核心挑战
插件间依赖关系复杂导致的攻击面扩大动态加载机制带来的运行时风险权限边界模糊引发的越权问题
代码审计新范式… · 2026/9/24 17:01:34
Flink Delegation Tokens(委派令牌)安全机制详解:原理、生命周期与续约架构 大数据流处理批处理数据工程 【免费下载链接】flink 项目地址: https://gitcode.com/gh_mirrors/fli/flink 点击查看 免费下载 委派令牌(Delegation Token,简称 DT)是 Flink 在安全模式下替代长期凭证(如 Kerberos 密… · 2026/9/24 17:01:28
Claude Cowork 用着别扭?这个免费开源的跨平台 AI 办公助手,我替你试了 前阵子我想找个能替代 Claude Cowork 的东西。卡我的点很具体:它只支持 macOS,我那台 Windows 笔记本用不了;它绑死了 Claude 模型,想换 Gemini 试试都不行;再往后还有订阅费(原文提到约 $100/月档… · 2026/9/24 17:35:07
全局可控与精细化分类:知源AI分级系统赋能教育数据治理落地方案 一、方案概要:AI驱动教育数据精细化治理,实现全域可控与高效落地提示:本方案基于教育数据治理合规要求与业务痛点,依托AI技术构建全流程治理体系,实现数据管控、治理效率、分类精度的三维升级。随着教育数字化深度落地… · 2026/9/24 17:35:07
工业网关选型指南:PLC数据采集、协议转换与MES集成架构分析 摘要: 制造企业进行数字化建设时,PLC联网并不是简单的数据读取过程,而是涉及设备通信、协议解析、数据转换和业务系统集成的一整套数据架构。工业网关作为现场设备与上层系统之间的数据节点,需要解决设备兼容、数据治理和系统连接… · 2026/9/24 17:35:01
从CRUD到AI:小白程序员5个月逆袭之路,内含收藏必备学习攻略! 本文分享了作者从传统CRUD工程师转型为AI应用工程师的5个月心路历程。通过实战先行、深入学习、项目巩固三阶段,结合AI工具辅助,成功掌握AI模型开发、部署与服务化。强调实践导向,推荐利用AI工具提升学习效率,并给出转型建议&… · 2026/9/24 17:35:01
云端 GPU 临时暂停:按量与预付费实例的关机计费边界 云端 GPU 实例在调试、等待输入、等待数据或阶段性任务之间暂停,是很常见的状态。
真正容易判断错的地方,不是“实例现在有没有跑任务”,而是把实例运行状态和计费状态当成了同一个变量。
对于按量实例和已经进入按天、周、月周期的实例&… · 2026/9/24 17:35:01
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44