新闻详情

新闻详情

首页 / 资讯中心 / 详情

Presto 0.251 版本发布详解:BigQuery 连接器落地、缓存亲和性优化与表约束能力增强

发布时间:2026/11/4 20:58:37来源:尧图网络
Presto 0.251 版本发布详解:BigQuery 连接器落地、缓存亲和性优化与表约束能力增强
大数据数据库后端【免费下载链接】prestoThe official home of the Presto distributed SQL query engine for big data项目地址https://gitcode.com/gh_mirrors/pre/presto点击查看免费下载本指南基于 Presto 官方仓库的 Release 0.251 发布说明位于presto-docs/src/main/sphinx/release/release-0.251.rst逐项解读该版本引入的 BigQuery 连接器、internal-communication.memoize-dead-nodes-enabled缓存亲和性优化、NOT NULL约束强制执行、JDBC 连接器用户名密码支持以及 Hive Alluxio 缓存配额与驱逐策略等变更。阅读完本文你将掌握每个新特性的启用方式、配置参数、底层实现模块位置以及升级到 0.251 后需要关注的配置项与行为变化。版本概览一次连接器 内核能力双线推进的发布Release 0.251 是 PrestoFacebook 分支即当前 README.md 所描述的分布式 SQL 查询引擎的一个功能型版本官方将其Highlights聚焦于一项首次引入 BigQuery 连接器BigQuery Connector。与此同时该版本在内核层面同步推进了多项能力包括 ORC 写入性能、节点故障期间的缓存亲和性、NOT NULL约束强制执行、Hive Alluxio 缓存管理等横跨核心引擎、连接器与验证工具三大领域。完整的变更清单可在 presto-docs/src/main/sphinx/release/release-0.251.rst 中查看该文件已被收录进 release 索引且随后还发布了修补版本release-0.251.1。按变更领域划分本版本的主要改动如下领域变更内容类型General提升 ORC writer 对字符串列string columns的写入性能性能改进General新增internal-communication.memoize-dead-nodes-enabled节点下线时避免重新分区新特性General支持对NOT NULL列校验值以强制执行约束新特性JDBC Connector新增对用户名和密码的支持新特性BigQuery Connector首次引入 BigQuery 连接器新连接器Hive使用 Alluxio 缓存时支持缓存配额cache quota新特性Hive新增cache.alluxio.eviction-policy配置缓存驱逐策略新配置Verifier提高重试次数与确定性分析determinism analysis上限工具改进下文将按新连接器 → 内核 General 变更 → 连接器与工具变更的顺序展开解读。BigQuery 连接器0.251 的最大亮点连接器的引入与文档入口Release 0.251 正式引入 BigQuery 连接器官方发布说明通过:doc:指令直接指向连接器使用文档。该文档位于 presto-docs/src/main/sphinx/connector/bigquery.rst是上手 BigQuery 连接器的第一手资料。模块结构与源码佐证连接器在仓库中以独立 Maven 模块presto-bigquery呈现对应 presto-bigquery/pom.xml。从源码结构看该模块共包含 27 个 Java 源文件覆盖了连接器的完整生命周期组件入口与装配BigQueryPlugin、BigQueryConnectorFactory、BigQueryConnector、BigQueryConnectorModule依赖注入装配元数据与计划BigQueryMetadata、BigQueryTableHandle、BigQueryColumnHandle、BigQueryTableLayoutHandle、BigQueryHandleResolver读取链路BigQuerySplitManager、BigQuerySplit、BigQueryPageSourceProvider、BigQueryResultPageSource、ReadSessionCreator、ReadRowsHelper、BigQueryReadClientFactory配置与认证BigQueryConfig、BigQueryCredentialsSupplier、ReadSessionCreatorConfig类型与工具BigQueryType、Conversions、BigQueryUtil、BigQueryErrorCode等。这些类全部位于presto-bigquery/src/main/java/com/facebook/presto/plugin/bigquery/目录下其中BigQuerySplitManager与ReadSessionCreator的组合负责通过 BigQuery Storage Read API 生成读取会话与拆分splitBigQueryResultPageSource负责将读取结果转译为 Presto 的 Page 数据流。配置参数凭据与项目信息连接器的核心配置集中在 BigQueryConfig.java 中。源码通过Config注解暴露了以下关键参数该文件路径为presto-bigquery/src/main/java/com/facebook/presto/plugin/bigquery/BigQueryConfig.java配置项说明源码依据bigquery.credentials-keyBase64 编码的凭据密钥credentials key与 credentials-file 二选一setCredentialsKeybigquery.credentials-fileJSON 凭据文件的路径与 credentials-key 二选一setCredentialsFilebigquery.parent-project-id父项目 IDparent project id用于计费等场景setParentProjectId认证逻辑上BigQueryCredentialsSupplier优先使用显式配置的凭据源码中AssertTrue校验表明必须指定bigquery.credentials-key或bigquery.credentials-file其中之一否则会尝试创建默认的 GoogleCredentials且两者不能同时配置。一个最小化的 catalog 配置示例配置于etc/catalog/目录下的 properties 文件中如下connector.namebigquery bigquery.credentials-file/path/to/service-account-key.json bigquery.parent-project-idmy-gcp-project使用方式连接器引入后即可在查询中直接引用 BigQuery 数据集例如-- 查看 BigQuery 项目中的数据集 SHOW SCHEMAS FROM bigquery; -- 查询某张表 SELECT * FROM bigquery.dataset_name.table_name LIMIT 100;需要强调的是连接器要求所在环境能够访问 Google Cloud 并正确配置凭据凭据缺失时的降级行为尝试默认 GoogleCredentials依赖运行环境的 Application Default Credentials 支持。General Changes 深度解读ORC writer 字符串列写入性能改进Release 0.251 提升了 ORC writer 对字符串列string columns的写入性能。这一改进直接影响使用 ORC 格式的 Hive 等连接器的数据写入吞吐。ORC 相关实现位于presto-orc模块presto-orc/pom.xml读者可在presto-orc/src/main/java下找到 writer、编码器如 dictionary encoding 相关类与列统计实现结合本版本变更深入分析字符串列的编码路径。发布说明未给出具体的性能量化数据因此在生产环境评估收益时应以自身数据集的基准测试为准。缓存亲和性internal-communication.memoize-dead-nodes-enabled当集群中的节点短暂下线时Presto 通常会对数据进行重新分区repartitioning这会导致 shuffle 数据分布变化、缓存命中率cache affinity hit rate下降。0.251 通过新增配置属性internal-communication.memoize-dead-nodes-enabled解决了这一问题在有限时间内记住已下线节点避免因节点临时故障而触发大规模重分区从而提升缓存亲和性命中率。该配置在源码中的定义位于 InternalCommunicationConfig.java路径presto-internal-communication/src/main/java/com/facebook/presto/server/InternalCommunicationConfig.java关键实现如下private boolean memoizeDeadNodesEnabled; Config(internal-communication.memoize-dead-nodes-enabled) ConfigDescription(Enables memoizing dead nodes in discovery node manger) public InternalCommunicationConfig setMemoizeDeadNodesEnabled(boolean memoizeDeadNodesEnabled) { this.memoizeDeadNodesEnabled memoizeDeadNodesEnabled; return this; }启用方式在etc/config.properties中internal-communication.memoize-dead-nodes-enabledtrue该配置默认值为falseJava 布尔字段默认值即默认不启用记忆死节点行为。需要提醒的是这一特性针对的是短暂/临时性节点下线场景若节点长时间不可用仍应按常规机制将其从集群中剔除避免数据分布失真。NOT NULL 约束强制执行本版本新增了对NOT NULL约束的支持通过对NOT NULL列的实际值进行校验来强制执行约束。这意味着写入或更新数据时若NOT NULL列出现空值将不再被静默接受。从仓库的 SPI 层看表约束table constraint体系已具备完整的类型支撑NotNullConstraint.java路径presto-spi/src/main/java/com/facebook/presto/spi/constraints/定义了非空约束的数据结构同目录下还有PrimaryKeyConstraint、UniqueConstraint以及基类TableConstraint后者通过JsonSubTypes注册了notnullconstraint等子类型便于跨节点序列化传递TableConstraintsHolder.java 中的validateTableConstraints负责对约束集合做合法性校验。在引擎侧presto-main-base模块中AlterColumnNotNullTask.java 负责处理ALTER COLUMN ... SET NOT NULL之类的语句通过metadata.addConstraint(session, tableHandle, new NotNullConstraint(column))将约束写入元数据ShowQueriesRewrite.java 在重写SHOW类查询时会过滤并呈现NotNullConstraint使约束可通过元数据查询可见。可见0.251 的约束能力是SPI 数据结构 引擎 DDL 任务 元数据查询三层协同的结果。实际执行中连接器/引擎在写入路径上会校验NOT NULL列的值是否为 NULL违反约束的写入将被拒绝。JDBC Connector支持用户名与密码Release 0.251 为 JDBC 连接器新增了**用户名和密码username and password**的支持使基于 JDBC 的各类连接器如 MySQL、PostgreSQL、SQL Server 等能够通过连接属性传递认证信息。相关基础实现位于presto-base-jdbc模块presto-base-jdbc/pom.xml各具体数据库连接器如 presto-mysql、presto-postgresql复用该模块的连接与属性处理逻辑。在实际配置中可通过 catalog properties 传递连接属性例如connector.namemysql connection-urljdbc:mysql://host:3306 connection-usermyuser connection-passwordmypassword该变更使得依赖 JDBC 用户名/密码认证的数据库能够以标准方式接入 Presto具体属性名因连接器而异建议以对应连接器文档及presto-base-jdbc中的配置类为准。Hive 变更Alluxio 缓存配额与驱逐策略Release 0.251 对 Hive 连接器的 Alluxio 缓存能力进行了两处增强缓存配额cache quota使用 Alluxio 缓存时支持设置配额避免缓存无限增长占用过多本地/分布式存储驱逐策略配置新增配置属性cache.alluxio.eviction-policy用于设置 Alluxio 缓存的驱逐策略。cache.alluxio.eviction-policy的四种取值Alluxio 缓存配置类位于 AlluxioCacheConfig.java路径presto-cache/src/main/java/com/facebook/presto/cache/alluxio/AlluxioCacheConfig.java其中定义了private EvictionPolicy evictionPolicy EvictionPolicy.LRU; Config(cache.alluxio.eviction-policy) ConfigDescription(The cache eviction policy) public AlluxioCacheConfig setEvictionPolicy(EvictionPolicy evictionPolicy)驱逐策略的取值定义在 EvictionPolicy.java路径presto-cache/src/main/java/com/facebook/presto/cache/alluxio/EvictionPolicy.java中每个枚举值对应 Alluxio 客户端的缓存驱逐器类枚举值对应 Alluxio 驱逐器实现策略含义FIFOalluxio.client.file.cache.evictor.FIFOCacheEvictor先进先出LFUalluxio.client.file.cache.evictor.LFUCacheEvictor最不经常使用LRUalluxio.client.file.cache.evictor.LRUCacheEvictor最近最少使用默认值UNEVICTABLEalluxio.client.file.cache.evictor.UnevictableCacheEvictor不可驱逐适合受保护的热数据从源码可见evictionPolicy字段的默认值为EvictionPolicy.LRU因此不配置该属性时默认采用 LRU 策略。配额及其他相关配置同文件AlluxioCacheConfig.java还提供了与缓存行为紧密相关的配置可与驱逐策略组合使用cache.alluxio.max-cache-sizeAlluxio 缓存的最大可用空间默认 2GB即new DataSize(2, GIGABYTE)cache.alluxio.quota-enabled是否启用缓存配额对应本版本的cache quota支持默认关闭cache.alluxio.eviction-retries驱逐重试的最大次数默认 10cache.alluxio.async-write-enabled是否异步写入缓存cache.alluxio.timeout-enabled/cache.alluxio.timeout-duration缓存操作超时开关与时长默认启用、60 秒cache.alluxio.metrics-enabled、cache.alluxio.jmx-class、cache.alluxio.metrics-domain缓存指标采集与 JMX 暴露配置。一个启用配额并切换驱逐策略的 Hive catalog 配置示例connector.namehive hive.cache.enabledtrue hive.cache.alluxio.max-cache-size100GB cache.alluxio.eviction-policyLFU cache.alluxio.quota-enabledtrue需要注意的是Alluxio 缓存相关依赖alluxio-core-client-hdfs、alluxio-core-client-fs、alluxio-core-common在 presto-cache/pom.xml 中声明使用该能力前需确认运行环境已具备相应的 Alluxio 部署与配置。Verifier 变更重试与确定性分析上限提升Presto Verifier 是用于对比验证两个 Presto 集群/查询行为一致性的工具实现位于 presto-verifier。0.251 提高了 verifier 的重试次数retry与确定性分析determinism analysis限制。在验证流程中当一次查询出现失败或结果不确定时Verifier 会进行重试与确定性检查例如重复执行以确认结果是否稳定。提高这两项上限意味着对偶发失败容忍度更高减少因瞬时抖动导致的误报对结果不确定的查询能做更多轮次的重复验证提升确定性判断的可靠性。代价是单条查询的验证耗时可能增加因此在高并发验证场景下需要结合 verifier 的并发/限流配置综合权衡。升级到 0.251 的检查清单综合本版本变更升级时建议按以下顺序核对新增 BigQuery 连接器如需使用创建 catalog 文件并配置bigquery.credentials-key/bigquery.credentials-file二选一与bigquery.parent-project-id缓存亲和性若集群存在节点频繁短时重启的场景可在config.properties中开启internal-communication.memoize-dead-nodes-enabledtrue默认关闭NOT NULL 约束确认下游连接器/写入链路对NOT NULL列的校验行为避免因新增约束校验导致原本可写入的空值被拒绝Hive Alluxio 缓存如需限制缓存规模启用cache.alluxio.quota-enabled并按需设置cache.alluxio.eviction-policy默认 LRU与cache.alluxio.max-cache-sizeVerifier注意重试与确定性分析上限提升带来的验证耗时变化。参考与延伸阅读本版本完整变更清单presto-docs/src/main/sphinx/release/release-0.251.rst版本索引含后续 0.251.1 修补版presto-docs/src/main/sphinx/release.rstBigQuery 连接器使用文档presto-docs/src/main/sphinx/connector/bigquery.rstBigQuery 连接器源码入口presto-bigquery/src/main/java/com/facebook/presto/plugin/bigquery/内部通信配置类presto-internal-communication/src/main/java/com/facebook/presto/server/InternalCommunicationConfig.javaAlluxio 缓存配置与驱逐策略枚举presto-cache/src/main/java/com/facebook/presto/cache/alluxio/AlluxioCacheConfig.java、EvictionPolicy.javaNOT NULL 约束 SPI 定义presto-spi/src/main/java/com/facebook/presto/spi/constraints/NotNullConstraint.javaDDL 任务实现见 AlterColumnNotNullTask.java赞分享大数据数据库后端【免费下载链接】prestoThe official home of the Presto distributed SQL query engine for big data项目地址https://gitcode.com/gh_mirrors/pre/presto点击查看免费下载相关推荐Presto 0.216 版本发布说明详解新函数、查询优化与连接器能力增强Presto 0.216 版本发布说明详解新函数、查询优化与连接器能力增强 本指南基于 Presto 开源仓库中的官方发布说明 release 0.216.r大数据数据库后端Presto 0.261 版本发布详解DECIMAL 聚合性能优化、Hive 隐藏列、Iceberg LocationProvider 与连接器增强Presto 0.261 版本发布详解DECIMAL 聚合性能优化、Hive 隐藏列、Iceberg LocationProvider 与连接器增强 本篇技术大数据数据库后端Presto 0.233 版本发布详解软亲和调度、异步页传输与连接器生态增强Presto 0.233 版本发布详解软亲和调度、异步页传输与连接器生态增强 导读 本文基于 Presto 官方仓库的 Release 0.233 发布说明大数据数据库后端上一篇探索高效iOS应用内路由方案HHRouter下一篇Sunshine 游戏串流教程10 分钟装好并连上客户端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/4 15:56:54

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/3 12:09:35

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/4 17:01:23

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/4 12:33:12

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/4 1:25:31

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/4 3:51:11

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉