问题
你有一份工作,阅读和写作是一个SQL端点通过一个JDBC连接。
SQL仓库无法执行的工作,你会得到一个java.net.SocketTimeoutException:读超时错误消息。
2022/02/04 17:36:15——TI_stg_trade。0- Caused by: com.simba.spark.jdbc42.internal.apache.thrift.transport.TTransportException: java.net.SocketTimeoutException: Read timed out 2022/02/04 17:36:15 - TI_stg_trade.0 - at com.simba.spark.hivecommon.api.TETHttpClient.flushUsingHttpClient(Unknown Source) 2022/02/04 17:36:15 - TI_stg_trade.0 - at com.simba.spark.hivecommon.api.TETHttpClient.flush(Unknown Source) 2022/02/04 17:36:15 - TI_stg_trade.0 - at com.simba.spark.jdbc42.internal.apache.thrift.TServiceClient.sendBase(TServiceClient.java:73) 2022/02/04 17:36:15 - TI_stg_trade.0 - at com.simba.spark.jdbc42.internal.apache.thrift.TServiceClient.sendBase(TServiceClient.java:62)
导致
每个传入请求需要一个线程请求的持续时间。当同时发生的请求的数量大于可用的线程的数量,会发生超时。这可能发生在长时间运行的查询。
解决方案
增加了SocketTimeout价值的JDBC连接URL。
在这个例子中,SocketTimeout设置为300秒:
jdbc:火花:/ / <服务器主机>:443;HttpPath = < http-path >;运输方式= http; SSL = 1(;财产=价值[;财产=价值]];SocketTimeout = 300