在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:10000/test?mapreduce.job.queuename=root.test&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);
对应的截图如下:
基于CDH构建离线数仓,在通过JDBC向
Hive
Server2提交作业时出现
java
.net
.
Socket
Timeout
Exception
:
Read
time
d out 错误,导致大批量的作业失败,不能按时产生数据,已严重影响到业务运行。
最近由于一些表中每条数据量过大,导致查询时一条sql(100条)过了很久都没有查出。所以遇到这种情况时可以修改sql为一条一条查。
这时需要设置超时时间:
prepareStatement= con.prepareStatement(selectSql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_
READ
_ONLY);
// 设置超时时间为30s
prepareStatement.setQuery
Timeout
(30);
resultSet = ps.exe
数据库表的数据量大概50W左右,在报表设计器下创建了
hive
的数据源,连接正常,由于数据量比较大,就用了润乾报表的
大数据
报表功能,报表设置好后,发布到页面中报错:
数据集ds1中,SQL语句SELECT * FROM general_bil::org.apache.thrift.transport.TTransport
Exception
:
java
.net
.
Socket
Timeout
Excep...
最近项目中写了个提数的的系统,该系统架构类似
Hadoop
里面的namenode和tasknode工作方式,客户端好像是tasknode,服务端namenode,是通过http通讯。
客户端从服务端领取提数任务时候,每个任务都启动下单独的客户端(jar包)去执行,提取数据生成cvs或者txt的文档,发送到网盘中,然后客户端执行完成退出。...
set
hive
.metastore.client.
socket
.
timeout
=500;
--指定MR任务运行队列
set mapreduce.job.queuename=bigdata;
--指定作业名称,如果脚本中有多个sql语句,那么你设定jobname后,所有的sql生成的job都会有同一个名字
set mapred.job.name=jobname;
并行化配置
hive
默认job是顺序进行的,一个HQL拆分成
1、
问题
描述
在
Hive
升级到2.3.6版本后,启动
Hive
server2需要花费15分钟左右的时间,这对于平时调试和紧急重启影响很大。因此查看启动log,发现两处疑点:
发现主要耗时就在这两处,第一次6分多钟第二次刚好5分钟。
2、
问题
排查
不多不少的5分钟让我想到了配置metastore连接的超时时间(
hive
.metastore.client.
socket
.
timeout
)刚好也是300s,于是去看这部分代码,并增加了些日志来排查。
org/apache/
hadoop
/
hive
/metastore
2)
hive
Connection的
socket
超时时间通过login
Timeout
进行设置,而login
Timeout
读取的DriverManager的超时时间,因此,在创建
hive
连接时需要设置DriverManage的login
Timeout
属性。总结:
hive
中执行SQL的耗时较长,需要增大网络读超时时间的值,如果使用Hikari数据库连接池管理
hive
连接,可以通过配置连接超时时间来改变
hive
的读超时时间。不能盲目跟随,需要结合各自应用进行配置。
hive
-jdbc版本:2.3.9。