hive read time out

hive-jdbc版本:2.3.9

报错信息如下:

问题定位:客户端的socket连接读超时,默认超时时间为30秒,需要在应用端增大读超时时间。

解决方案:

1)hiveConnection在使用socket连接时,设置了超时时间为30秒,超时时间较短,在运行稍微复杂点的SQL时,就会导致超时。如下图。

 

 2) hiveConnection的socket超时时间通过loginTimeout进行设置,而loginTimeout读取的DriverManager的超时时间,因此,在创建hive连接时需要设置DriverManage的loginTimeout属性。如下图。

3) hiveConnection通常使用数据库连接池进行创建和管理,系统使用的连接池为:Hikari。在数据库连接池创建时都会设置datasource的loginTimeout,并且会重置DriverManager的loginTimeout属性。如下图。

因此,需要使用connectionTimeout间接设置loginTimeout属性,如下。

config.setConnectionTimeout(1000 * 60 * 15); 

总结:hive中执行SQL的耗时较长,需要增大网络读超时时间的值,如果使用Hikari数据库连接池管理hive连接,可以通过配置连接超时时间来改变hive的读超时时间。

另外:网上有很多解决方案,通过设置 DriverManager.setLoginTimeout() 增大hive读超时的时间。不能盲目跟随,需要结合各自应用进行配置。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ant-666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值