大数据数据库后端【免费下载链接】prestoThe official home of the Presto distributed SQL query engine for big data项目地址https://gitcode.com/gh_mirrors/pre/presto点击查看免费下载Presto 0.242.1 是一个聚焦缺陷修复的补丁版本核心解决两大问题一是启用 Function Namespace Manager 但未配置 Thrift 时服务启动失败PR 15501二是读取加密 DWRF 表时查询可能抛出NullPointerException。本文以官方发布说明为主体结合仓库中的 Function Namespace Manager 实现、静态配置加载逻辑与 ORC/DWRF 加密读取链路源码逐条还原这两处问题的成因、修复方向与规避手段帮助读者在升级或排查问题时做到心中有数。说明本仓库为 Presto 的当前主干版本release-0.242.1 发布说明对应的代码此后已有大量演进。文中对问题成因的分析依据当前源码结构进行合理推断具体以你实际部署版本的代码为准。版本 0.242.1 概览发布说明presto-docs/src/main/sphinx/release/release-0.242.1.rst版本定位0.242 系列的缺陷修复补丁patch release不含新增功能特性。修复范围启动缺陷启用 Function Namespace Manager 且未配置 Thrift 时服务无法正常启动PR 15501。Hive 读取缺陷读取加密 DWRF 表时查询可能以NullPointerException失败。警告启用 Function Namespace Manager 时启动失败的已知缺陷发布说明以.. warning::形式标记了首个问题属于已知缺陷known bug如果启用了 Function Namespace Manager 且未配置 Thrift会导致启动失败PR 15501。什么是 Function Namespace ManagerFunction Namespace Manager 是 Presto 用于管理用户自定义 SQL 函数UDF命名空间的核心机制。它负责在函数名与函数定义之间建立映射并驱动远程函数执行。当前仓库中该功能的插件注册于 FunctionNamespaceManagerPlugin.java对外暴露三类工厂MySqlFunctionNamespaceManagerFactory基于 MySQL 存储函数元数据JsonFileBasedFunctionNamespaceManagerFactory基于 JSON 文件定义函数RestBasedFunctionNamespaceManagerFactory基于 REST 服务托管函数。启用方式是在etc/function-namespace/目录放置形如xxx.properties的配置文件仓库自带的示例 example.properties.example 如下function-namespace-manager.namemysql database-urljdbc:mysql://localhost:3306 function-namespaces-table-nameexample_function_namespaces functions-table-nameexample_sql_functions启动加载链路与缺陷成因推断从源码结构看Presto 启动时由 StaticFunctionNamespaceStore.java 扫描配置目录下所有.properties文件读取每个文件校验其中必须包含function-namespace-manager.name属性否则直接抛出checkState异常将属性连同命名空间名交给FunctionAndTypeManager.loadFunctionNamespaceManager(...)完成管理器实例化与注册。在presto-function-namespace-managers模块中SQL 函数的实际远程执行依赖 Thrift 协议相关实现集中在 execution/thrift 包下包括ThriftSqlFunctionExecutor、SimpleAddressThriftSqlFunctionExecutionModule以及ThriftSqlFunctionExecutionConfig。其中ThriftSqlFunctionExecutionConfig通过Config(thrift-page-format)暴露了thrift-page-format配置项默认PRESTO_THRIFT。由此可以推断PR 15501 描述的缺陷发生在管理器实例化阶段——当 Function Namespace Manager 被启用、函数执行器依赖 Thrift 地址解析与执行模块初始化时若集群从未配置任何 Thrift 相关服务例如未部署 Thrift UDF Server也未提供对应的地址选择与 thrift 端点配置依赖注入环节会抛出异常最终导致 Presto 进程启动即失败。升级与部署规避建议评估必要性若集群没有启用 UDF Function Namespace不受该缺陷影响仅在etc/function-namespace/下配置了管理器且依赖 Thrift 执行函数时才会命中。升级策略0.242.1 的发布说明仅对问题做了 warning 提示并未在本补丁中声明修复若已修复通常会以 Fixed 条目列出。建议先在小规模测试集群验证启动行为如确实需要 Function Namespace 能力提前配置好对应的 Thrift UDF 服务及参数再升级密切跟踪后续 release note 中对该 PR 的修复声明。Hive 变更加密 DWRF 表读取的 NullPointerException 修复Hive Changes 一节是本版本唯一明确声明修复的缺陷修复读取加密 DWRF 表时查询可能以NullPointerException失败的问题。DWRF 加密在 Presto 中的实现DWRF 是 Presto 生态中基于 ORC 扩展的存储格式其加密能力在presto-orc模块中实现关键类包括DwrfDataEncryptor.java数据加密器抽象DwrfEncryptionProvider.java按KeyProviderCRYPTO_SERVICE/UNKNOWN返回对应加密库未配置时抛出UnsupportedOperationExceptionDwrfKeyProvider.java根据节点类型ListOrcType返回节点 - 中间密钥映射EMPTY常量表示无密钥DwrfEncryptionInfo.java 与 DwrfWriterEncryption.java分别承载读取侧与写入侧的加密配置。读取侧的核心链路位于 AbstractOrcRecordReader.java构造时接收dwrfEncryptionGroupMap加密组 - 列映射与columnToIntermediateKeyMap列 - 中间密钥映射并通过createIntermediateKeysMap组装中间密钥随后调用checkPermissionsForEncryptedColumns(...)校验当前查询涉及的列是否具备解密权限。NPE 的典型成因基于源码推断AbstractOrcRecordReader的构造过程存在多处空值敏感点例如columnToIntermediateKeyMap或dwrfEncryptionGroupMap为null时ImmutableMap.copyOf或后续哈希表访问会直接触发 NPE文件元数据中声明了加密组但读取侧没有提供对应的中间密钥映射checkPermissionsForEncryptedColumns在校验查询列是否属于加密组时可能因缺失键而返回空引用加密组映射与中间密钥映射不一致时createIntermediateKeysMap遍历dwrfEncryptionGroupMap.values()并按组号取密钥取不到时产生空条目进入StripeReader解密阶段后引发 NPE。这些场景在正常加密 DWRF 表上多因元数据与密钥配置不一致或查询计划裁剪后列集合与加密组不匹配而触发0.242.1 正是针对其中一种可稳定复现的路径做了修复。仓库中的测试 TestDecryption.java 以及OrcTester中与encrypt/Encryption相关的用例可作为理解加密读写行为与回归覆盖的参考。对使用方的影响与建议该问题只影响启用了 DWRF 加密的 Hive 表普通 ORC/DWRF 表不受影响升级到 0.242.1 后建议在测试环境对加密表执行SELECT尤其是只投影部分列的查询做回归验证确认不再出现NullPointerException若仍需排查此类问题可从两个方向入手核对 Hive 侧 DWRF 文件的加密组元数据以及 Presto 侧为文件提供的密钥映射是否完整一致。小结与升级建议问题影响面类型处置Function Namespace Manager 启用 未配置 Thrift 导致启动失败PR 15501启用 UDF 命名空间管理的集群已知缺陷warning升级前评估必要时先配好 Thrift UDF 服务再升级并关注后续版本修复声明读取加密 DWRF 表查询抛 NPE使用 DWRF 加密表的 Hive 查询已修复Hive Changes升级 0.242.1 后回归验证加密表查询整体来看0.242.1 是一个小型缺陷修复版本对绝大多数未使用 Function Namespace / DWRF 加密的部署而言升级风险很低而同时使用这两类能力的用户则应重点围绕Thrift 配置完整性与加密 DWRF 表查询回归两项开展验证。赞分享大数据数据库后端【免费下载链接】prestoThe official home of the Presto distributed SQL query engine for big data项目地址https://gitcode.com/gh_mirrors/pre/presto点击查看免费下载相关推荐Presto 0.243.1 发布说明Function Namespace 启动缺陷警告与 Hive 加密 DWRF 读取修复Presto 0.243.1 发布说明Function Namespace 启动缺陷警告与 Hive 加密 DWRF 读取修复 0.243.1 是 Prest大数据数据库后端Presto 0.244.1 版本解读Hive ORC Flat Map 空 Map 读取修复与 Function Namespace Manager 启动警告Presto 0.244.1 版本解读Hive ORC Flat Map 空 Map 读取修复与 Function Namespace Manager 启动警大数据数据库后端Presto 0.245.1 版本解读ORC 选择性读取器修复 VARCHAR 嵌套列读取与函数命名空间 Thrift 启动警告Presto 0.245.1 版本解读ORC 选择性读取器修复 VARCHAR 嵌套列读取与函数命名空间 Thrift 启动警告 本文以官方发布说明 rele大数据数据库后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
SciPy 1.7.1 发布说明深度解析:缺陷修复背后的源码级原理 SciPy 1.7.1 发布说明深度解析:缺陷修复背后的源码级原理 【免费下载链接】scipy SciPy library main repository 项目地址: https://gitcode.com/gh_mirrors/sc/scipy
SciPy 1.7.1 是一个纯粹的缺陷修复(bug-fix)版本,与 … · 2026/9/23 1:26:59
搞定全国大专院校名单数据清洗,从入门到精通避坑指南 搞定全国大专院校名单数据清洗,从入门到精通避坑指南 复制来的代码跑不通,报错信息满屏飞,你盯着屏幕发呆,心里只有一句话:这代码到底哪儿错了?别慌,这种“复制粘贴即报错”的坑,我踩了十年,太熟了。今天不聊虚的,直接拆解【全国大专院校名单】数据… · 2026/9/23 1:26:59
拳头账号注册下载避坑指南:解决配置环境卡死痛点 拳头账号注册下载避坑指南:解决配置环境卡死痛点 配置环境就卡半天,是不是你也经历过这种绝望?明明照着文档一步步来,结果在拳头账号注册下载的环节,进度条不动、报错乱飞,甚至直接把电脑搞崩溃。别急,这不是你技术不行,而是大部分教程都在避重就轻,… · 2026/9/23 2:21:49
计算机应用基础终结性考试操作题备考:Word/Excel/PPT参数对齐技巧 简介:面向国家开放大学计算机应用基础课程考生,这份终结性考试试题包含两大任务:按给定论文样文完成学士学位论文的格式设置,再将结果文档自摘要起转换为PPT另存。试题对页面设置、封面、声明页、目录、摘要、正文各级标题、结束语… · 2026/9/23 2:21:49
RWKV 状态管理完全指南:从固定大小循环状态到多会话、序列化与数值稳定性实战 RWKV 状态管理完全指南:从固定大小循环状态到多会话、序列化与数值稳定性实战 【免费下载链接】AI-Research-SKILLs Comprehensive open-source library of AI research and engineering skills for any AI model. Package the skills and your claude code/codex/g… · 2026/9/23 2:21:49
kOps 中的容器镜像认证机制:go-containerregistry `authn` 包源码级解析与实践指南 kOps 中的容器镜像认证机制:go-containerregistry authn 包源码级解析与实践指南 【免费下载链接】kops Kubernetes Operations (kOps) - Production Grade k8s Installation, Upgrades and Management 项目地址: https://gitcode.com/gh_mirrors/kop/kops 导… · 2026/9/23 2:21:43
VS Code插件推荐(一):用TaoToken统一管理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/23 2:21:43
微信朋友圈视频速查手册:源码级拆解与实战避坑指南 微信朋友圈视频速查手册:源码级拆解与实战避坑指南 还在为官方文档篇幅冗长而抓狂?别在几千页的API手册里打转了。 这份【微信朋友圈视频】源码级速查手册,直接带你穿透表层,直击底层逻辑。 一、 痛点直击:为什么官方文档让你头大?… · 2026/9/23 2:21:43
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29