問題
你有一份工作,閱讀和寫作是一個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