在会话级别 ABORT_DETACHED_QUERY=true 时雪花取消查询

Snowflake cancel query when ABORT_DETACHED_QUERY=true on session level

我正在使用 Snowflake JDBC 在 Snowflake 上执行多语句脚本。我的应用程序由 hadoop 集群上的 Oozie 作业启动(在迁移阶段)。这里的要求是,当 Oozie 作业被杀死并在那里杀死 运行 应用程序实例时,使用 JDBC 提交的查询应该被 Snowflake 取消。

我已将 ABORT_DETACHED_QUERY=true 添加到 JDBC 连接 url,看起来像 jdbc:snowflake://<account>.snowflakecomputing.com/?warehouse=<WH>&db=<DB>&schema=<SCHEMA>&ABORT_DETACHED_QUERY=true

即使在 25 分钟后,脚本执行也不会被 Snowflake 取消。我试图找出潜在的问题。我尝试使用会话 ID 在 SESSIONS 视图上查询会话,但它不存在。我也尝试查询活动连接,但找不到方法。

所以我有两个问题,

  1. 配置ABORT_DETACHED_QUERY参数的方法正确吗?
  2. 您如何检查 Snowflake 上的活动 JDBC 连接,因为 SHOW CONNECTIONS 没有 return 与我的应用程序的任何连接?

此外, 我使用 commons-dbcp BasicDataSource 作为数据源管理器, commons-dbutils 使用 int QueryRunner.execute(String) 方法提交查询。

这是会话参数而不是连接字符串参数,因此设置它的正确方法是使用 ALTER 命令:

ALTER SESSION SET ABORT_DETACHED_QUERY=TRUE;

5 分钟后,如果由于会话突然终止而导致连接丢失,您的查询应该会中止。