解决运行clickhouseSql超时问题

表现

在平时工作中,会用到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。解决!

总结

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

建议

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

你可能感兴趣的:(数据库,mysql,clickhouse,大数据)