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

K8s环境Trino集群JDBC报Query not found错误,求排查修复方案

Trino JDBC查询404错误的原因与修复方案

错误核心原因

从报错信息和"CLI正常、JDBC异常"的差异来看,主要集中在会话路由一致性和客户端配置上,具体可能的原因:

  • JDBC未启用会话亲和性:K8s Service(或Envoy代理)默认轮询负载均衡,Trino查询状态仅保存在执行查询的Coordinator节点上。JDBC后续拉取结果时如果被路由到其他Coordinator,就会找不到对应查询,返回404。而CLI默认和单个Coordinator保持长连接,不会出现这个问题。
  • JDBC驱动与集群版本不兼容:驱动版本和Trino集群版本差异过大时,会话标识逻辑可能不匹配,导致后续请求无法关联到已提交的查询。
  • Envoy代理配置缺失会话保持:错误日志显示请求经过Envoy,如果Envoy未配置会话亲和性,会导致同一客户端的请求被分发到不同Coordinator节点。
  • 查询会话被提前清理:如果JDBC拉取结果间隔过长,Coordinator已清理超时的查询会话,但这种情况CLI也会受影响,概率较低。

具体修复步骤

1. 给JDBC连接添加会话亲和性参数

修改JDBC连接URL,强制后续请求路由到同一个Coordinator节点:

jdbc:trino://trino.svc.cluster.local:8080/your_catalog/your_schema?sessionAffinity=true

如果使用连接池,需确保连接池不会频繁重建连接,避免路由到其他节点。

2. 对齐JDBC驱动与Trino集群版本

确保驱动版本和集群版本完全一致,比如集群为450版本,就使用对应版本的驱动:

<!-- Maven依赖示例 -->
<dependency>
    <groupId>io.trino</groupId>
    <artifactId>trino-jdbc</artifactId>
    <version>450</version>
</dependency>

3. 配置Envoy的会话亲和性

如果用Envoy做代理,添加基于Cookie或源IP的会话保持配置,确保同一客户端请求始终路由到同一Coordinator:

cluster:
  name: trino-coordinator-cluster
  connect_timeout: 0.25s
  type: STRICT_DNS
  lb_policy: ROUND_ROBIN
  session_affinity:
    name: COOKIE
    cookie_session_affinity:
      name: "trino-session-id"
      ttl: 86400s

4. 延长Trino查询会话保留时间

修改Coordinator的config.properties配置,延长查询闲置和执行超时时间:

query.max-execution-time=2h
query.max-idle-time=30m

修改后重启Coordinator Pod生效。

验证方式

调整配置后重新通过JDBC提交查询,观察是否仍出现404;同时查看Trino Coordinator日志,确认所有请求都路由到了同一个节点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 21:04:57