Skip to content

Releases: aliyun/aliyun-odps-java-sdk

v0.54.0-public

21 Oct 07:55

Choose a tag to compare

[0.54.0-public] - 2025-10-21

✨ New Features

  1. Java 21 Support - Added JDK 21 configuration files and build configurations
  2. New Data Types - Added support for GEOGRAPHY and BLOB data types
  3. AspectJ Support - Added AspectJ Maven plugin support for aspect-oriented programming
  4. ClassLoader Enhancements - Improved compatibility across Java versions with getLoadedJars method
  5. Blob Class - Added Blob class for handling large object references in storage services
  6. GeographyObject Interface - Added interface for handling geographic data types
  7. Proxy Support - Added ProxyConfig class supporting HTTP, HTTPS, SOCKS4, SOCKS5 configurations
  8. Incremental Read Support - Added support for version-based and timestamp-based incremental data reading in Table API

🐞 Bug Fixes

  1. PartitionSpec - Fixed partition specification parsing issues and improved splitting logic
  2. Security Permissions - Removed direct dependency on sun.security.util.SecurityConstants, using standard RuntimePermission instead
  3. ClassLoader Compatibility - Fixed class loader compatibility issues across different Java versions
  4. OdpsOptions - Fixed instantiation issues ensuring correct Odps instance reference passing

📦 Dependency Upgrades

  1. aspectjrt: 1.8.9 → 1.9.7
  2. mockito-core: 1.10.8 → 4.11.0
  3. maven-shade-plugin: 3.2.1 → 3.5.1
  4. maven-compiler-plugin: 3.1 → 3.13.0 (JDK 21)
  5. maven-surefire-plugin: 2.22.2 → 3.2.5 (JDK 21)
  6. maven-javadoc-plugin: 2.10.4 → 3.11.2 (JDK 21)
  7. 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.91.9.7
  • mockito-core: 1.10.84.11.0
  • maven-shade-plugin: 3.2.13.5.1
  • maven-compiler-plugin: 3.13.13.0 (JDK 21)
  • maven-surefire-plugin: 2.22.23.2.5 (JDK 21)
  • maven-javadoc-plugin: 2.10.43.11.2 (JDK 21)
  • 移除了 org.codehaus.jackson:jackson-mapper-asl 依赖

v0.53.2-public

11 Sep 07:01

Choose a tag to compare

[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

20 Aug 09:54

Choose a tag to compare

[0.53.1-public] - 2025-08-20

✨ New Features

  • SQLExecutorImpl
    Removed internal SessionRecordSetIterator class and extracted it as a standalone class to improve code organization.

📦 Dependency Upgrades

  • snappy-java: 1.1.10.31.1.10.7
  • guava: 32.1.1-jre33.4.8-jre
  • netty-all: 4.1.86.Final4.1.119.Final

[0.53.1-public] - 2025-08-20

✨ 新增功能

  • SQLExecutorImpl
    删除了内部"SessionRecordSetIterator"类并将其提取为独立类

📦 依赖升级

  • snappy-java: 1.1.10.31.1.10.7
  • guava: 32.1.1-jre33.4.8-jre
  • netty-all: 4.1.86.Final4.1.119.Final

v0.53.0-public

25 Jul 08:22

Choose a tag to compare

Changelog

[0.53.0-public] - 2025-07-25

✨ New Features

  • VectorizedOutputer
    Added getWriteBytes() method to retrieve written byte count statistics.
  • TableBatchReadSession
    Introduced JSON-based serialization/deserialization methods for enhanced data interoperability.
  • CreateProjectParam
    Added defaultQuota() method to configure default project quotas.
  • V4 Signature
    Added support for corporation configuration 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
    Added getDownloadSession(String projectName, String instanceID, String sessionId) method for simplified download session retrieval.

🐞 Bug Fixes

  • Fixed DateTime timezone handling in Predicate to consistently use local timezone.
  • Resolved data overwrite issue where reloadExtended() could override reload() results in the Table class.

📦 Dependency Upgrades

  • commons-codec: 1.131.18.1
  • jackson-databind: 2.15.22.18.2
  • commons-compress: 1.41.20
  • Apache Arrow: 4.0.017.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) 方法,简化下载会话获取流程。

🐞 问题修复

  • 修复 PredicateDateTime 类型处理时未使用本地时区的问题,确保时区一致性。
  • 修复 Table 类在调用 reloadExtended() 时可能覆盖 reload() 数据的问题。

📦 依赖升级

  • commons-codec: 1.131.18.1
  • jackson-databind: 2.15.22.18.2
  • commons-compress: 1.41.20
  • Apache Arrow: 4.0.017.0.0
  • 新增 zstd-jni 依赖: 1.5.7-2(支持 ZSTD 压缩)

v0.52.3-public

14 Jun 09:30

Choose a tag to compare

Changelog

[0.52.3-public] - 2025-06-14

🎉 New Features

  • OdpsOptions
    Adds instance-level variables for Odps that can be accessed through odps.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 a caseSensitive parameter 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 extends IllegalArgumentException.

更新日志

[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

03 Jun 09:52

Choose a tag to compare

[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

08 May 10:40

Choose a tag to compare

[0.52.1-public] - 2025-05-08

🎉 New features

  • SQLExecutor
    SQLExecutorBuilder added the parameter skipCheckIfSelect (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

17 Apr 12:31

Choose a tag to compare

Changelog

[0.52.0-public] - 2025-04-17

🎉 New Features

  • TableAPI

    • Added enhanceWriteCheck parameter to TableWriteSessionBuilder to strengthen write validation capabilities
    • Added Append2 Table preview feature in TableCreator (🚧 Preview)
  • DownloadSession

    • Introduced enableMaxStorage configuration to support downloading Delta Tables via StorageAPI (🚧 Preview)
  • 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)
  • SQL

    • Added SQLTaskOption and CreateInstanceOption configuration classes to simplify overloads of SQLTask.run()
    • Added support for submitting Merge Tasks using regular expressions
    • Implemented Unique ID mechanism to ensure idempotent submission of jobs with the same ID
  • ObjectConverter

    • Added support for BINARY_FORMAT_QUOTED_PRINTABLE format parsing

🛠️ Functionality Improvements

  • ArrowStreamRecordReader
    Refactored class implementation to support converting any source ArrowReader to RecordReader

  • ArrayRecord

    • Optimized type validation logic:
      ✅ Changed potential ClassCastException in set method to IllegalArgumentException
      ✅ Improved error message readability
      ✅ Prevented JVM implicit optimizations (e.g., truncated error messages to null)

更新日志

[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)
  • SQL

    • 新增 SQLTaskOptionCreateInstanceOption 配置类,简化 SQLTask.run() 方法重载
    • 支持通过正则表达式提交 Merge Task 作业
    • 新增 UniqueId 机制,确保同 ID 作业幂等提交
  • ObjectConverter

    • 新增 BINARY_FORMAT_QUOTED_PRINTABLE 格式解析支持

🛠️ 功能优化

  • ArrowStreamRecordReader
    重构类实现,支持将任意来源的 ArrowReader 转换为 RecordReader

  • ArrayRecord

    • 优化类型校验逻辑:
      ✅ 将 set 方法可能抛出的 ClassCastException 改为 IllegalArgumentException
      ✅ 增强错误信息可读性
      ✅ 避免 JVM 对异常的隐式优化(如错误信息被截断为 null)

v0.51.11-public

18 Mar 06:01

Choose a tag to compare

Changelog

[0.51.11-public] - 2025-03-18

Key Changes

  • MCQA 2.0 Structural Improvement: The ResultDescriptor subclass in Instance class has been upgraded from Map<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

11 Mar 11:27

Choose a tag to compare

Changelog

[0.51.10-public] - 2025-03-11

Features

  • TableTunnel Metrics Support
    Upload/Download methods now support metrics collection.
    Documentation Reference

  • TunnelBufferedReader Implementation(Alpha)
    Added TunnelBufferedReader for downloading table/instance data via short-lived connections.

  • Reorderable Data Structures
    Introduced ReorderableRecord and ReorderableStruct entities.
    Design Details


更新日志

[0.51.10-public] - 2025-03-11

功能增强

  • TableTunnel 指标支持
    Upload/Download 方法新增指标收集能力
    文档参考

  • TunnelBufferedReader 实现 (Alpha版本)
    新增 TunnelBufferedReader 类,支持通过短连接下载表/实例数据

  • 可排序数据结构
    新增 ReorderableRecordReorderableStruct 实体类
    设计说明