Releases: aliyun/aliyun-odps-java-sdk
v0.54.0-public
[0.54.0-public] - 2025-10-21
✨ New Features
- Java 21 Support - Added JDK 21 configuration files and build configurations
- New Data Types - Added support for GEOGRAPHY and BLOB data types
- AspectJ Support - Added AspectJ Maven plugin support for aspect-oriented programming
- ClassLoader Enhancements - Improved compatibility across Java versions with getLoadedJars method
- Blob Class - Added Blob class for handling large object references in storage services
- GeographyObject Interface - Added interface for handling geographic data types
- Proxy Support - Added ProxyConfig class supporting HTTP, HTTPS, SOCKS4, SOCKS5 configurations
- Incremental Read Support - Added support for version-based and timestamp-based incremental data reading in Table API
🐞 Bug Fixes
- PartitionSpec - Fixed partition specification parsing issues and improved splitting logic
- Security Permissions - Removed direct dependency on sun.security.util.SecurityConstants, using standard RuntimePermission instead
- ClassLoader Compatibility - Fixed class loader compatibility issues across different Java versions
- OdpsOptions - Fixed instantiation issues ensuring correct Odps instance reference passing
📦 Dependency Upgrades
- aspectjrt: 1.8.9 → 1.9.7
- mockito-core: 1.10.8 → 4.11.0
- maven-shade-plugin: 3.2.1 → 3.5.1
- maven-compiler-plugin: 3.1 → 3.13.0 (JDK 21)
- maven-surefire-plugin: 2.22.2 → 3.2.5 (JDK 21)
- maven-javadoc-plugin: 2.10.4 → 3.11.2 (JDK 21)
- Removed org.codehaus.jackson:jackson-mapper-asl dependency
[0.54.0-public] - 2025-10-21
✨ 新增功能
- Java 21 支持
新增对 Java 21 的支持,添加了 JDK 21 配置文件和相关构建配置 - 新数据类型支持
新增 GEOGRAPHY 和 BLOB 数据类型支持,扩展了数据处理能力 - AspectJ 支持
添加 AspectJ Maven 插件支持,为面向切面编程提供基础 - 类加载器增强
改进了类加载器在不同 Java 版本中的兼容性,添加了 getLoadedJars 方法 - Blob 类
新增 Blob 类,用于处理存储服务中的大对象引用 - GeographyObject 接口
添加 GeographyObject 接口,用于处理地理数据类型 - Proxy 支持
新增 ProxyConfig 类,支持 HTTP、HTTPS、SOCKS4、SOCKS5 等多种代理配置 - 增量读取支持
Table API 新增对增量读取的支持,支持基于版本或时间戳的增量数据读取
🐞 问题修复
- PartitionSpec
修复了分区规范解析问题,改进了分割逻辑 - 安全权限
移除了对 sun.security.util.SecurityConstants 的直接依赖,改用标准的 RuntimePermission - 类加载器兼容性
修复了类加载器在不同 Java 版本中的兼容性问题 - OdpsOptions
修复了 OdpsOptions 实例化问题,确保正确传递 Odps 实例引用
📦 依赖升级
- aspectjrt:
1.8.9→1.9.7 - mockito-core:
1.10.8→4.11.0 - maven-shade-plugin:
3.2.1→3.5.1 - maven-compiler-plugin:
3.1→3.13.0(JDK 21) - maven-surefire-plugin:
2.22.2→3.2.5(JDK 21) - maven-javadoc-plugin:
2.10.4→3.11.2(JDK 21) - 移除了 org.codehaus.jackson:jackson-mapper-asl 依赖
v0.53.2-public
[0.53.2-public] - 2025-09-11
✨ New Features
- MaxStorageDownloadOption
Added support for configuring timestamp and datetime units for better data type handling - SQLExecutorBuilder
Optimized fetch result configuration and improved thread management - BatchWriter
Added default flush method for better interface compliance - SessionRecordSetIterator
Restored SessionRecordSetIterator class to maintain backward compatibility
🐞 Bug Fixes
- LogView
Fixed LogView host configuration and improved version handling logic - UpsertRecord
Fixed case sensitivity issues in column name handling - CSVRecordParser
Removed unnecessary try-catch block that was masking parsing errors - TableTunnel
Enhanced error handling in upsert operations and improved Arrow options configuration - ArrowWriterImpl
Added flush method implementation for better resource management
📄 Documentation
- Updated appendix documentation and added type mapping guide for MaxCompute types
[0.53.2-public] - 2025-09-11
🐞 问题修复
- LogView
修复了 LogView 主机配置并改进了版本处理逻辑 - UpsertRecord
修复了列名处理中的大小写敏感性问题 - CSVRecordParser
移除了掩盖解析错误的不必要 try-catch 块 - TableTunnel
增强了 upsert 操作中的错误处理并改进了 Arrow 选项配置 - ArrowWriterImpl
添加了 flush 方法实现以更好地管理资源
✨ 新增功能
- MaxStorageDownloadOption
新增对时间戳和日期时间单位的配置支持,以更好地处理数据类型 - SQLExecutorBuilder
优化了获取结果的配置并改进了线程管理 - BatchWriter
添加了默认的 flush 方法以更好地符合接口规范 - SessionRecordSetIterator
恢复了 SessionRecordSetIterator 类以保持向后兼容性
📄 文档更新
- 更新了附录文档并添加了 MaxCompute 类型的映射指南
v0.53.1-public
[0.53.1-public] - 2025-08-20
✨ New Features
- SQLExecutorImpl
Removed internalSessionRecordSetIteratorclass and extracted it as a standalone class to improve code organization.
📦 Dependency Upgrades
- snappy-java:
1.1.10.3→1.1.10.7 - guava:
32.1.1-jre→33.4.8-jre - netty-all:
4.1.86.Final→4.1.119.Final
[0.53.1-public] - 2025-08-20
✨ 新增功能
- SQLExecutorImpl
删除了内部"SessionRecordSetIterator"类并将其提取为独立类
📦 依赖升级
- snappy-java:
1.1.10.3→1.1.10.7 - guava:
32.1.1-jre→33.4.8-jre - netty-all:
4.1.86.Final→4.1.119.Final
v0.53.0-public
Changelog
[0.53.0-public] - 2025-07-25
✨ New Features
- VectorizedOutputer
AddedgetWriteBytes()method to retrieve written byte count statistics. - TableBatchReadSession
Introduced JSON-based serialization/deserialization methods for enhanced data interoperability. - CreateProjectParam
AddeddefaultQuota()method to configure default project quotas. - V4 Signature
Added support forcorporationconfiguration parameter, enabling compatibility with dedicated cloud environments. - AklessAccount
Full support for V4 signature protocol. - TableTunnel
Added ZSTD (Zstandard) compression algorithm support for optimized data transfer efficiency. - MaxCompute Query Acceleration (MaxQA)
Enabled concurrent reading for ultra-large result sets, significantly improving performance (Note: Concurrent operations increase memory consumption; adjust concurrency levels based on cluster capacity). - Preview Feature
Added support for tag operations via Tunnel. - InstanceTunnel
AddedgetDownloadSession(String projectName, String instanceID, String sessionId)method for simplified download session retrieval.
🐞 Bug Fixes
- Fixed
DateTimetimezone handling inPredicateto consistently use local timezone. - Resolved data overwrite issue where
reloadExtended()could overridereload()results in theTableclass.
📦 Dependency Upgrades
- commons-codec:
1.13→1.18.1 - jackson-databind:
2.15.2→2.18.2 - commons-compress:
1.4→1.20 - Apache Arrow:
4.0.0→17.0.0 - Added zstd-jni dependency:
1.5.7-2(for ZSTD compression support)
更新日志
[0.53.0-public] - 2025-07-25
✨ 新增功能
- VectorizedOutputer
新增getWriteBytes()方法,支持获取写入字节数统计。 - TableBatchReadSession
新增基于 JSON 的序列化/反序列化方法,提升数据交互灵活性。 - CreateProjectParam
新增defaultQuota()方法,支持设置项目默认配额。 - Aliyun V4 签名
支持配置corporation参数,适配专有云环境部署需求。 - AklessAccount
完整支持 V4 签名协议。 - TableTunnel
新增 ZSTD (Zstandard) 压缩算法支持,优化数据传输效率。 - MaxCompute Query Acceleration (MaxQA)
支持并发读取超大结果集,显著提升性能(注意:并发操作将增加内存消耗,需根据集群容量合理配置并发度)。 - Preview 功能
支持通过 Tunnel 执行标签(Tag)操作。 - InstanceTunnel
新增getDownloadSession(String projectName, String instanceID, String sessionId)方法,简化下载会话获取流程。
🐞 问题修复
- 修复
Predicate对DateTime类型处理时未使用本地时区的问题,确保时区一致性。 - 修复
Table类在调用reloadExtended()时可能覆盖reload()数据的问题。
📦 依赖升级
- commons-codec:
1.13→1.18.1 - jackson-databind:
2.15.2→2.18.2 - commons-compress:
1.4→1.20 - Apache Arrow:
4.0.0→17.0.0 - 新增 zstd-jni 依赖:
1.5.7-2(支持 ZSTD 压缩)
v0.52.3-public
Changelog
[0.52.3-public] - 2025-06-14
🎉 New Features
-
OdpsOptions
Adds instance-level variables for Odps that can be accessed throughodps.options(). Two methods are currently available:setUseLegacyLogview= true/false/null
When set to true, uses logview; when false, uses jobinsight (logview v2); when null (default), intelligently determines if jobinsight is available in the current region and uses it if possible, otherwise falls back to logview.
⚠️ Compatibility Note: Previous versions defaulted to logview. After upgrading, calls to get logview URLs might return jobinsight addresses - verify this to avoid compatibility issues.setSkipCheckIfEpv2= true/false
Defaults to false. In version 0.51.7, interfaces like getTable gained support for EPv2 projects but this impacts interface performance. Setting this configuration to true skips EPv2 project checks to improve performance.
-
ArrayRecord
Added acaseSensitiveparameter in major Record initialization scenarios (constructor initialization of ArrayRecord, and Tunnel Session's newRecord method) to control whether field names are case-sensitive during setByName operations.
⚠️ Historical Compatibility Note: In version 0.51.8, we made Record case-insensitive (since MaxCompute engine is case-insensitive), but this introduced performance overhead. This version provides a way to restore the original behavior. -
SchemaMismatchRuntimeException
Added a new exception type that makes a best-effort attempt to inform users:- Data mismatches table schema during Tunnel writes
- Table schema might have changed - please recreate the Tunnel Session
This class extendsIllegalArgumentException.
更新日志
[0.52.3-public] - 2025-06-14
🎉 新增功能
-
OdpsOptions
新增 Odps 实例级别的一些变量,可以通过odps.options()获取。现有两个方法:setUseLegacyLogview= true/false/null
当为 true,使用 logview,当为 false,使用 jobinsight(logview v2),当为 null(默认值),智能判断当前 region 是否能够使用 jobinsight,如是使用 jobinsight,否则使用 logview。
⚠️ 兼容性提示:此前版本默认使用的是 logview,更新到此版本后,获取logview时可能获取到 jobinsight 地址,注意这点以避免兼容性问题。setSkipCheckIfEpv2= true/false
默认为 false,在 0.51.7 版本中,getTable 等接口增加了对 EPv2 项目的支持,但会影响接口性能。可以通过将此配置设置 true,会跳过Epv2的项目,提高性能。
-
ArrayRecord
在主要的初始化 Record 场景,比如通过构造函数初始化ArrayRecord,通过Tunnel Session newRecord 方法生成 Record,都新增了 caseSensitive 参数,用来标识使用该 Record setByName 时,是否区分大小写。
⚠️ 历史兼容说明:在 0.51.8 版本中,我们让 Record 不再区分大小写(因为 MaxCompute 引擎不区分大小写),但这会导致一些性能损失。因此在本版本,我们提供了方式来恢复原行为。 -
SchemaMismatchRuntimeException
新增了一种异常类型,来试图 try best 的告诉用户:在 Tunnel 写入过程中,传入的数据和表模式不匹配 可能是表模式发生了变化,请重建 Tunnel Session。该类是IllegalArgumentException的子类。
v0.52.2-public
[0.52.2-public] - 2025-06-03
问题修复
- CommandApi
修复了在 SQLExecutor 开启 CommandApi 功能时,在处理 desc extended table 返回结果中 Comment 字段错误的为 Boolean 类型的问题。
[0.52.2-public] - 2025-06-03
Issue Fixed
- CommandApi
Fixed an issue where the Comment field is Boolean type is handled when SQLExecutor is enabled when CommandApi function is turned on.
v0.52.1-public
[0.52.1-public] - 2025-05-08
🎉 New features
- SQLExecutor
SQLExecutorBuilder added the parameterskipCheckIfSelect(only Non-MaxQA scenarios are effective), which defaults to false. When true, the check of the select statement will be skipped to improve the performance under high concurrency.
It can be used when the request scenario is mainly a query statement. When processing non-query statements, the processing delay will become longer.
[0.52.1-public] - 2025-05-08
🎉 新增功能
- SQLExecutor
SQLExecutorBuilder 新增参数skipCheckIfSelect(仅非 MaxQA 场景生效),默认为 false,当为 true 时,会跳过 select 语句的校验,提高极限性能。
可以在请求场景主要为查询语句时使用,在处理非查询语句时,处理延时会变长。
v0.52.0-public
Changelog
[0.52.0-public] - 2025-04-17
🎉 New Features
-
TableAPI
- Added
enhanceWriteCheckparameter toTableWriteSessionBuilderto strengthen write validation capabilities - Added
Append2 Tablepreview feature inTableCreator(🚧 Preview)
- Added
-
DownloadSession
- Introduced
enableMaxStorageconfiguration to support downloading Delta Tables via StorageAPI (🚧 Preview)
- Introduced
-
MaxQA
- Implemented CSV data parsing to strongly-typed records (
Parse CSV To Record) - After server readiness,
getResult(non-Tunnel mode) will return typed data (previously all String types) (🚧 Preview)
- Implemented CSV data parsing to strongly-typed records (
-
SQL
- Added
SQLTaskOptionandCreateInstanceOptionconfiguration classes to simplify overloads ofSQLTask.run() - Added support for submitting Merge Tasks using regular expressions
- Implemented Unique ID mechanism to ensure idempotent submission of jobs with the same ID
- Added
-
ObjectConverter
- Added support for
BINARY_FORMAT_QUOTED_PRINTABLEformat parsing
- Added support for
🛠️ Functionality Improvements
-
ArrowStreamRecordReader
Refactored class implementation to support converting any sourceArrowReadertoRecordReader -
ArrayRecord
- Optimized type validation logic:
✅ Changed potentialClassCastExceptioninsetmethod toIllegalArgumentException
✅ Improved error message readability
✅ Prevented JVM implicit optimizations (e.g., truncated error messages to null)
- Optimized type validation logic:
更新日志
[0.52.0-public] - 2025-04-17
🎉 新增功能
-
TableAPI
TableWriteSessionBuilder新增enhanceWriteCheck参数,增强写入校验能力TableCreator新增Append2 Table预览功能(🚧 Preview)
-
DownloadSession
- 新增
enableMaxStorage配置,支持通过 StorageAPI 下载 Delta Table(🚧 Preview)
- 新增
-
MaxQA
- 实现 CSV 数据解析到强类型记录功能(
Parse CSV To Record) - 服务端 Ready 后,
getResult(非 Tunnel 模式)将返回类型化数据(原全量 String 类型)(🚧 Preview)
- 实现 CSV 数据解析到强类型记录功能(
-
SQL
- 新增
SQLTaskOption和CreateInstanceOption配置类,简化SQLTask.run()方法重载 - 支持通过正则表达式提交 Merge Task 作业
- 新增 UniqueId 机制,确保同 ID 作业幂等提交
- 新增
-
ObjectConverter
- 新增
BINARY_FORMAT_QUOTED_PRINTABLE格式解析支持
- 新增
🛠️ 功能优化
-
ArrowStreamRecordReader
重构类实现,支持将任意来源的ArrowReader转换为RecordReader -
ArrayRecord
- 优化类型校验逻辑:
✅ 将set方法可能抛出的ClassCastException改为IllegalArgumentException
✅ 增强错误信息可读性
✅ 避免 JVM 对异常的隐式优化(如错误信息被截断为 null)
- 优化类型校验逻辑:
v0.51.11-public
Changelog
[0.51.11-public] - 2025-03-18
Key Changes
- MCQA 2.0 Structural Improvement: The
ResultDescriptorsubclass inInstanceclass has been upgraded fromMap<String, String>to a dedicated POJO object, specifically optimized for MCQA 2.0 scenarios - Backward Compatibility: Fully compatible with legacy logic - existing code will continue to function without modification
更新日志
[0.51.11-public] - 2025-03-18
主要改动
- 结构优化:
Instance类中ResultDescriptor子类由Map<String, String>升级为独立的 POJO 对象,专门适配 MCQA 2.0 场景 - 兼容保障:完全兼容旧版逻辑,现有代码无需修改即可正常运行
v0.51.10-public
Changelog
[0.51.10-public] - 2025-03-11
Features
-
TableTunnel Metrics Support
Upload/Download methods now support metrics collection.
Documentation Reference -
TunnelBufferedReader Implementation(Alpha)
AddedTunnelBufferedReaderfor downloading table/instance data via short-lived connections. -
Reorderable Data Structures
IntroducedReorderableRecordandReorderableStructentities.
Design Details