[0.57.2-public] - 2026-05-07
🐛 问题修复
- [Instance]: 为 MaxQA 实例添加凭据确保机制 - 当通过
Instances.get(id) 获取 MCQA 2.0 实例时,自动从响应头获取 x-odps-mcqa-conn 和 x-odps-mcqa-query-cookie 凭据,确保后续 /mcqa 前缀请求能正确路由。
- 相关 API:
Instance.ensureMaxQACredential()
[0.57.1-public] - 2026-04-08
📦 维护
- [Storage API]: 添加 Storage API 模块文档
- [Build]: 修复 POM 配置问题
[0.57.0-public] - 2026-03-25
✨ 新功能
- [Storage API][Preview]: 全新
odps-sdk-storage-api 模块 - 引入高性能 Storage API 客户端 MaxStorageClient,基于 Arrow 列式格式对 MaxCompute 表进行读写。支持通过 InputSplit 分片实现分布式并行读取、写入会话的 commit/abort 生命周期管理、表数据预览、Blob 下载以及 Instance 结果读取。
- 相关 API:
MaxStorageClient, MaxStorageClient.Builder, TableReadSession, TableWriteSession, InstanceReadSession, BlobManager
- [Arrow Helper]: 全新
odps-arrow-helper 模块 - 将 Arrow 相关工具类抽取为独立模块,包含 TableIdentifier、InstanceIdentifier、StreamIdentifier、各类型 Arrow Accessor、ArrowReaderBuilder、ArrowStreamRecordReader、SchemaUtils 等。
- 相关 API:
TableIdentifier, InstanceIdentifier, StreamIdentifier, ArrowReaderBuilder
- [SQLExecutor]: Storage API 结果集集成 -
SQLExecutorImpl 在查询结果包含 BLOB 列时,自动通过 Storage API(StorageAPIResultSet)下载结果,提升兼容性与数据传输效率。
- 相关 API:
StorageAPIResultSet, InternalBlobHelper
- [SQLExecutor]: MaxQA Fallback 配置 - 新增
FallbackInfo 和 MaxQAConnInfo,支持配置 MaxQA Quota 的回退策略,当主 Quota 不可用时可自动回退到指定 Quota。
- 相关 API:
FallbackInfo, MaxQAConnInfo, SQLExecutorBuilder.maxQAConnInfo(), SQLExecutorBuilder.enableMaxQA()
- [RestClient]: 请求/响应拦截器链 - 新增
InterceptorChain、RequestInterceptor、ResponseInterceptor、InterceptorContext,支持可插拔的 HTTP 请求响应拦截。
- 相关 API:
InterceptorChain, RequestInterceptor, ResponseInterceptor
- [Commons]: 新增
JsonString 类型 - 新增 JsonString,作为轻量级 JsonValue 实现,封装原始 JSON 字符串,适用于无需解析 JSON 结构的场景。
- [Commons]: 新增
RecordReader / RecordWriter 接口 - 将通用的 RecordReader 和 RecordWriter 接口下沉至 odps-sdk-commons,便于跨模块复用。
- 相关 API:
RecordReader, RecordWriter
- [Odps]: Catalog API Host 及过期元数据读取配置 -
Odps 新增 setCatalogApiHost() / getCatalogApiHost() 和 setAllowStaleMetadataRead() / isAllowStaleMetadataRead(),分别用于配置 Catalog API 端点和允许读取过期元数据。
- 相关 API:
Odps.setCatalogApiHost(), OdpsOptions.allowStaleMetadataRead
- [Quota]: 获取 MaxQA 连接信息 - 新增
Quotas.getMaxQAConnInfo(quotaName),支持获取指定 Quota 的 MaxQA 连接信息。
- 相关 API:
Quotas.getMaxQAConnInfo()
- [Partition]: 分区状态管理 - 新增
Partition.State 枚举和 setState() 方法,支持设置分区状态。
- 相关 API:
Partition.State, Partition.setState()
🚀 功能增强与性能优化
- [OdpsType]:
OdpsType 枚举新增数字编码 - 每个 OdpsType 枚举值携带稳定的整型 code,并支持通过 OdpsType.fromCode(int) 反向查找,便于序列化和协议兼容。
- [Arrow Helper]: Arrow Accessor 层重构 - 将所有按类型实现的 Arrow 列访问器迁移至新的
odps-arrow-helper 模块,提升模块化程度和可复用性。
- [TunnelBufferedWriter]: 异步 flush 支持 -
TunnelBufferedWriter 新增非阻塞异步 flush 能力,采用双 buffer 交换机制(flush(boolean blocking)),提供背压控制,提升流式上传的写入吞吐量。
- 相关 API:
TunnelBufferedWriter.flush(boolean blocking)
- [UpsertStream]: 异步 flush 及 Buffer 优化 -
UpsertStreamImpl 支持通过可配置的 ExecutorService 执行异步 flush,采用按 bucket 双 buffer 交换机制,并新增 sync() 方法支持显式屏障同步。
- 相关 API:
UpsertStream.Builder.setAsyncFlushService(), UpsertStreamImpl.sync()
📦 依赖更新
- 新增:
com.squareup.okhttp3:okhttp:4.12.0(在 odps-sdk-storage-api 中已 shade)
[0.56.1-public] - 2026-02-04
🐛 问题修复
- [CVE]: 更新 commons-io 至 2.20.0 - 通过将 commons-io 库升级到 2.20.0 版本,修复了安全漏洞。
- [CVE]: 使用 at.yawk.lz4 替代 org.lz4.pure-java - 将 org.lz4.pure-java 依赖替换为 at.yawk.lz4,以解决安全漏洞问题。
[0.56.0-public] - 2026-01-30
✨ 新功能
- [Account]: 重构认证体系,采用新的
Credentials 类替代旧版 Credential,并新增 getRegionId() 方法支持区域 ID 配置,使认证机制更加灵活和标准化。
- 相关 API:
Account.getCredentials(), Account.getRegionId()
- [Instance]: 增强 MaxQA 查询结果状态管理,新增
SelectResultStatus 枚举以区分查询结果的完整状态(完整/截断/无结果),便于用户判断数据是否完整返回。
- 相关 API:
Instance.ResultDescriptor.SelectResultStatus, Instance.ResultDescriptor.getSelectResultStatus()
- [ProxyConfig]: 新增 Netty DNS 解析器控制选项,允许通过
withDisableNettyLocalResolver() 禁用本地 Netty DNS 解析器,适用于需要代理服务器进行 DNS 解析的场景。
- 相关 API:
ProxyConfig.Builder.withDisableNettyLocalResolver()
🚀 功能增强与性能优化
- [Arrow]: 优化 Arrow 数据读取器,统一使用
CommonsCompressionFactory 处理压缩数据,提升大规模数据读取性能和兼容性。
- [Tunnel]: 改进 Tunnel Endpoint 解析逻辑,优先使用
odps.getTunnelEndpoint() 配置项,简化端点配置流程。
- [RestClient]: 优化重试等待时间计算,仅使用连接超时时间而非连接+读取超时时间总和,使重试策略更加精准。
- [TableSchema]: 新增批量分区列配置方法
withPartitionColumns(),简化多分区列的创建流程。
- 相关 API:
TableSchema.Builder.withPartitionColumns()
🐛 问题修复
- [Instance]: 修复任务失败时的错误处理,在
waitForSuccess() 和 isSelect() 方法中增加 checkTaskFailed() 检查,确保在任务失败时能及时抛出异常并提供详细的失败信息。
📦 依赖更新
- 升级:
commons-io: 2.11.0 → 2.14.0
- 替换:
commons-lang:2.6 → org.apache.commons:commons-lang3:3.18.0
- 升级:
io.netty:netty-all: 4.1.119.Final → 4.1.130.Final
- 新增:
org.locationtech.jts:jts-core:1.19.0
- 替换:
com.aliyun:aliyun-java-auth:0.2.16-beta → com.aliyun:credentials-api:1.0.0
[0.55.1-public] - 2026-01-22
🐛 问题修复
- Arrow 字典解码
修复了 ArrowBatchNonReusedReader 中字典解码未使用压缩工厂的问题,提升 Arrow 数据读取的稳定性和性能。
[0.55.0-public] - 2025-12-12