表现
在平时工作中,会用到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。解决!
总结
虽然不是很官方的操作,但是,这无疑是最快速、成本最低的解决方式。还有几个方式据说是同样可以解决,但是需要改的配置比较多。文章来源:https://www.toymoban.com/news/detail-505543.html
建议
除非是经常遇见这类情况,不建议修改元数据。修改时,做好数据的备份,以免操作失误。有更好的方式,也欢迎大家分享~文章来源地址https://www.toymoban.com/news/detail-505543.html
到了这里,关于解决运行clickhouseSql超时问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!