Snowflake cloud data platform 在SnowflakeBasicDataSource中配置其他属性

Snowflake cloud data platform 在SnowflakeBasicDataSource中配置其他属性,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我在Java中使用下面的类。但是这个类的属性实现有限 SnowflakeBasicDataSource basicDataSource = new SnowflakeBasicDataSource(); basicDataSource.setSsl(true); basicDataSource.setUser(dbSnowFlakeUsername); basicDataSource.setPassword(dbSnowFlakePassword); basicD

我在Java中使用下面的类。但是这个类的属性实现有限

SnowflakeBasicDataSource basicDataSource = new SnowflakeBasicDataSource();
    basicDataSource.setSsl(true);
    basicDataSource.setUser(dbSnowFlakeUsername);
    basicDataSource.setPassword(dbSnowFlakePassword);
    basicDataSource.setUrl(dbSnowFlakeUrl);
    basicDataSource.setLoginTimeout(dbSnowFlakeLoginTimeoutSeconds);
例如,我想指出networkTimeout和queryTimeout。但这并没有实现

如何将其传递给Snowflakes

试图通过这样的url传递

jdbc:snowflake://ni31094.eu-central-1.snowflakecomputing.com/?db=TEST_DB&schema=PUBLIC&role=SYSADMIN&warehouse=TEST_WAREHOUSE&tracing=FINE&networkTimeout=10&queryTimeout=10
但我认为这不管用


请寻求帮助。

网络和查询超时的两个参数是:

  • 网络超时:
    networkTimeout
  • 查询超时:
    queryTimeout=
查看您的字符串:是的,您正确地使用了这两个参数,但是我发现您的用户和密码参数丢失了

您还可以尝试:

  • 确保属性设置正确
  • 调整连接字符串和accountinformation值

您可以在此处找到有关疑难解答的更多详细信息:

网络和查询超时的两个参数是:

  • 网络超时:
    networkTimeout
  • 查询超时:
    queryTimeout=
查看您的字符串:是的,您正确地使用了这两个参数,但是我发现您的用户和密码参数丢失了

您还可以尝试:

  • 确保属性设置正确
  • 调整连接字符串和accountinformation值

您可以在此处找到有关疑难解答的更多详细信息:

在URL中为
雪花源设置属性确实有效。我用一个长时间运行的查询测试了
queryTimeout
,查询在参数中指定的时间后被正确取消

测试
networkTimeout
有点困难,因为很难知道它是如何实际使用的。它被net.snowflake.client.jdbc.RestRequest使用,我已经测试了正确的参数是否被传递,它确实被传递了。您获得60秒超时的原因是初始登录请求的HTTP请求默认设置为60秒。初始登录请求似乎忽略了
网络超时
。包含要运行的查询的请求被正确设置为通过查询字符串传入的
networkTimeout
参数。不幸的是,由于我的java技能不高,我无法测试
networkTimeout
导致错误的情况

下面是一些scala代码,它向您展示了在会话中正确设置了两个参数:

import net.snowflake.client.jdbc.{SnowflakeBasicDataSource,SnowflakeConnectionV1}
导入java.sql.xml语句
导入java.io.FileReader
导入java.util.Properties
对象基本连接器扩展应用程序{
val prop=新属性
prop.load(新文件读取器(“~/snowflake\u conn.properties”))
val username=prop.getProperty(“用户名”)
val password=prop.getProperty(“密码”)
val url=prop.getProperty(“url”)+“?网络超时=54321&queryTimeout=1234”
val basicDataSource=新雪花basicDataSource()
basicDataSource.setSsl(真)
basicDataSource.setUser(用户名)
basicDataSource.setPassword(密码)
basicDataSource.setUrl(url)
basicDataSource.setWarehouse(“DEMO\u WH”)
val conn:SnowflakeConnectionV1=basicDataSource.getConnection().asInstanceOf[SnowflakeConnectionV1]
val语句:语句=conn.createStatement()
val queryTimeout=conn.getSfSession.getQueryTimeout
val networkTimeout=conn.getSfSession.getNetworkTimeoutInMilli
println(s“查询超时:$queryTimeout”)
println(s“网络超时:$networkTimeout”)
语句。结束()
康涅狄格州关闭
上面打印出:

query timeout: 1234
network timeout: 54321

如您所见,我必须将连接对象强制转换为
SnowflakeConnectionV1
,并使用
getSfSession
方法使用
.asInstanceOf[SnowflakeConnectionV1]检查参数
。这是因为JDBC
连接
类型没有此方法。虽然您不必这样做,但如果您不关心检查参数,它仍然会正确使用它们。

在URL中为
雪花基本CDATA源设置属性确实有效。我使用在参数中指定的时间后,长时间运行的查询和查询将正确取消

测试
networkTimeout
有点困难,因为很难说它是如何实际使用的。它被
net.snowflake.client.jdbc.RestRequest使用,我已经测试过正确的参数是否被传递,它确实被传递了。获得60秒超时的原因是HTTP请求初始的ogin request默认设置为该值。初始登录请求似乎忽略了
networkTimeout
。包含要运行的查询的请求正确设置为通过查询字符串传入的
networkTimeout
参数。由于我的java技能不高,我无法测试
networkTimeout
的情况很遗憾,rkTimeout会导致错误

下面是一些scala代码,它向您展示了在会话中正确设置了两个参数:

import net.snowflake.client.jdbc.{SnowflakeBasicDataSource,SnowflakeConnectionV1}
导入java.sql.xml语句
导入java.io.FileReader
导入java.util.Properties
对象基本连接器扩展应用程序{
val prop=新属性
prop.load(新文件读取器(“~/snowflake\u conn.properties”))
val username=prop.getProperty(“用户名”)
val password=prop.getProperty(“密码”)
val url=prop.getProperty(“url”)+“?网络超时=54321&queryTimeout=1234”
val basicDataSource=新雪花basicDataSource()
basicDataSource.setSsl(真)
basicDataSource.setUser(用户名)
basicDataSource.setPassword(密码)
basicDataSource.setUrl(url)
basicDataSource.setWarehouse(“DEMO\u WH”)
val conn:雪花连接v1=