You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Drill(v1.13.0)连接DB2(LUW)报错求助

Apache Drill v1.13.0 与 DB2 LUW 兼容问题解决方案

我确实看到过不少用户成功让Apache Drill v1.13.0和DB2 LUW兼容运行的案例,不过你遇到的这个[jcc][t4][10120][10898][4.15.82] 无效操作:结果集已关闭异常是个典型的驱动兼容问题,咱们一步步来排查解决:

核心问题分析

这个异常本质是旧版DB2 JDBC驱动(你用的4.15.82)和Drill v1.13.0的JDBC结果集处理逻辑不匹配,驱动提前关闭了Drill还在使用的结果集。

具体解决步骤

  • 升级DB2 JDBC驱动版本
    旧驱动的结果集管理逻辑和Drill的调用流程冲突,建议升级到DB2 JDBC驱动4.2版本及以上(比如4.26.14或更高的兼容版本)。注意驱动版本要和你的DB2 LUW版本匹配:

    • DB2 10.5 对应驱动4.2版本
    • DB2 11.1/11.5 可以使用更新的4.2.x或更高版本驱动
      替换驱动时,要把新的db2jcc4.jar(以及对应的license包如db2jcc_license_cisuz.jar,如果需要)放到Drill的$DRILL_HOME/jars/3rdparty目录下,替换旧文件。如果是分布式集群,所有节点都要同步替换。
  • 检查并修正DB2存储插件配置
    确保db2-storage-plugin.conf的关键配置正确:

    {
      "type": "jdbc",
      "driver": "com.ibm.db2.jcc.DB2Driver",
      "url": "jdbc:db2://<你的DB2主机>:<端口>/<数据库名>:currentSchema=<目标Schema>;",
      "username": "<用户名>",
      "password": "<密码>",
      "enabled": true,
      "connectionProperties": {
        "resultSetHoldability": "1",
        "useCursorFetch": "true",
        "fetchSize": "1000"
      }
    }
    

    其中connectionProperties里的参数是关键:

    • resultSetHoldability": "1" 强制驱动保持结果集打开直到显式关闭
    • useCursorFetch": "true" 启用游标式获取,避免一次性加载大量数据导致结果集提前关闭
    • fetchSize": "1000" 控制每次获取的行数,平衡性能和结果集稳定性
  • 测试验证
    重启Drill集群后,先用简单查询测试,比如:

    SELECT * FROM db2.<你的Schema>.<测试表> LIMIT 10;
    

    如果不再抛出异常,再逐步测试复杂查询,确认兼容性。

额外注意事项

  • 不要混用不同版本的DB2驱动包,确保所有节点的驱动版本一致
  • 如果你的DB2 LUW开启了SSL连接,需要在JDBC URL中添加SSL相关参数,同时确保驱动包支持SSL功能

内容的提问来源于stack exchange,提问作者JMX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:48:30