解决运行clickhouseSql超时问题

文章讲述了在使用dolphinscheduler、datagrip和dbever运行clickhouseSQL时遇到的超时问题,原因是clickhouse处理复杂查询时可能超过默认的30秒超时限制。解决方案是在URL中添加socket_timeout参数来延长超时时间,对于dolphinscheduler,由于直接在数据源中添加参数无效,作者通过修改元数据中的URL来实现。建议除非必要,否则不要修改元数据,并提醒注意备份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表现

在平时工作中,会用到dolphinscheduler/datagrip/dbever等运行clickhouseSql,而clickhouse的jdbc在运行过程中给予我的痛苦可不是一星半点,常常运行一个sql会报错,没错,就是timeout。查阅各种资料后,找到了一个成本较低的解决方案。

原因

clickhouse作为一款近即席的数据库,数据处理是比较快的,但是遇见比较复杂的数据处理逻辑的时候,难免会在30s内没有任何的结果返回,此时jdbc认为是超时了,进而报错,无返回结果。实际上,CH仍在运行提交的sql,而开发人员会认为是失败。反而会再次提交任务,使得集群压力大,而且,CH的并发支持并不是很高,重复的提交会有拖垮进程的危险。

操作

datagrip/dbever等数据库链接工具:

直接修改url,在最后添加socket_timeout=300000即可解决,测试ok,可以在更长的时间返回处理的结果

dolphinscheduler:

使用的版本是2.0.6,在数据源中添加参数其实是不生效的,测试过多种方式,都没有起作用,最终,想到了一个黑科技,没错,就是元数据,打开mysql,找到对应的数据源的表,修改CH对应的URl。解决!

总结

虽然不是很官方的操作,但是,这无疑是最快速、成本最低的解决方式。还有几个方式据说是同样可以解决,但是需要改的配置比较多。

建议

除非是经常遇见这类情况,不建议修改元数据。修改时,做好数据的备份,以免操作失误。有更好的方式,也欢迎大家分享~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值