MaxCompute JDBC驱动是MaxCompute提供的Java数据库连接(Java Database Connectivity)接口。您可以通过标准的JDBC接口基于MaxCompute执行海量数据的分布式计算查询。MaxCompute JDBC驱动还可以用于连接MaxCompute和支持JDBC的工具。

JDBC使用说明

注意事项

  • 通过MaxCompute JDBC驱动执行SQL并获取结果,需要执行账号满足以下要求:

    • 是项目空间的成员。

    • 有项目空间的CreateInstance权限。

    • 有目标表的Select和Download权限。

      说明
      • 1.9及之前版本的MaxCompute JDBC驱动对每个查询都会创建临时表,并通过Tunnel从临时表获取结果。您使用这些版本的JDBC需要具备CreateTable权限。

      • 2.2及之后版本的MaxCompute JDBC驱动不再创建临时表,直接通过Instance Tunnel获取查询结果,没有CreateTable权限要求限制。

      MaxCompute权限详情请参见MaxCompute权限

  • MaxCompute提供了数据保护功能。当数据保护模式开启时,您无法将数据转移到项目空间之外。2.4之前版本的JDBC无法获取result set。2.4及之后版本的JDBC可以获得不超过READ_TABLE_MAX_ROW所定义行数的数据,详情请参见项目空间操作。数据保护功能详情请参见数据保护机制

  • MaxCompute 2.0数据类型版本支持较多数据类型,例如TINYINT、SMALLINT、DATETIME、TIMESTAMP、ARRAY、MAP和STRUCT等。您如果需要使用这些新类型,在执行SQL之前需要执行以下语句,打开MaxCompute 2.0数据类型开关。详情请参见数据类型版本说明

    set odps.sql.type.system.odps2=true

常见问题

  • 如何查看MaxCompute JDBC驱动的日志?

    • MaxCompute JDBC驱动的日志默认放在驱动JAR包所在的同级目录下,文件名为jdbc.log

    • 如果代码与驱动打包为一个Uber JAR,日志将会在Uber JAR所在的同级目录。

    MaxCompute JDBC驱动的日志记录了调用JDBC接口的详细信息,包括调用的类名、方法名、行数、参数和返回值等。您可以使用这些信息进行调试。

  • 如何获取MaxCompute Logview URL?

    MaxCompute JDBC驱动是基于MaxCompute Java SDK的封装。与MaxCompute客户端、MaxCompute Studio以及DataWorks一样,您通过MaxCompute JDBC驱动执行SQL时,会生成Logview URL。您可以通过Logview查看作业执行状态、追踪作业进度和获取作业执行结果。Logview URL可以通过properties.log4j参数配置,默认打印到StdErr。

  • 是否支持连接池与Auto-Commit?

    MaxCompute提供REST服务,和传统数据库维持长连接的方式不同。MaxCompute JDBC驱动创建Connection是十分轻量的操作,无须针对MaxCompute JDBC刻意使用连接池。MaxCompute JDBC也支持使用连接池的场景。

    MaxCompute不支持Transaction,每个查询动作都会即时体现到服务端,即默认为Auto-Commit的行为。MaxCompute JDBC驱动不支持关闭Auto-Commit模式。

  • 如何获取分区字段和类型的描述?

    您可以通过Connection.getMetadata()方法获取DatabaseMetaData对象,通过DatabaseMetaData的getColumns()方法获取所有列的元数据。