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

2023-11-16

问题描述:

今天开发时发现,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

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.net.SocketTimeoutException: Read timed out 问题解决 的相关文章

随机推荐