java.net.SocketTimeoutException: Read timed out 问题解决

问题描述:

今天开发时发现,jdbc  hive 连接执行 一个 hive sql 查询语句时,总是报org.apache.thrift.transport.TTransportException: java.net.SocketTimeoutException: Read timed out 异常

 

问题解决方案:

  通过一番分析与问题查找,最终通过以下两个步骤解决了问题

步骤一:

   在jdbc url 后面追加参数 ,设定各种超时时间参数设置为1800秒,因为hive任务可能会执行比较久,所以超时时间设置长一点

hive.metastore.client.socket.timeout=1800&hive.server.read.socket.timeout=1800&hive.server.write.socket.timeout=1800&hive.server.thrift.socket.timeout=1800&hive.client.thrift.socket.timeout=1800

以下是我追加参数后的url

jdbc:hive2://bigdata-test-4:10000/test?mapreduce.job.queuename=root.users.zhongtai&hive.metastore.client.socket.timeout=1800&hive.server.read.socket.timeout=1800&hive.server.write.socket.timeout=1800&hive.server.thrift.socket.timeout=1800&hive.client.thrift.socket.timeout=1800,username=hdfs,password=hdfs

 

步骤二:

在通过jdbc 创建 Statement 语句对象时,设置语句对象的查询超时时间为1800秒,由于执行hive sql 比较耗时,所以一定要设置一个合理的时间,等待hive sql 返回结果(此步骤非常关键!!!)

对应的api  方法如下: stmt为 java.sql.Statement 对象实例 

 stmt.setQueryTimeout(1800);
对应的截图如下:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Bpbmd3ZWljaGVuZw==,size_16,color_FFFFFF,t_70

 


版权声明:本文为pingweicheng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>