一、场景及错误信息
今天使用 Datax 往 ClickHouse 同步数据时,出现如下错误:
ClickHouse exception, code: 1002, host: 10.129.170.80, port: 8123; Code: 252. DB::Exception: Too many parts (300). Merges are processing significantly slower than inserts. (TOO_MANY_PARTS) (version 22.3.2.1)
二、报错原因
Too many part 异常原因:当数据插入到 ClickHouse 表时,每一批插入都会生成对应 parts 文件,ClickHouse 后台会有合并小文件的操作。当插入速度过快,生成 parts 小文件过多时,ClickHouse 无法以适当的速度合并这些 parts 时会报上面这个错误。
例如并发数为 200,这样一批写入到 ClickHouse 中就会产生 200 个文件,几批下来如果 ClickHouse 内部线程没来及合并相同分区,就会抛异常
而 ClickHouse 默认一次合并超过 300 个文件就会报错,来看一下配置:

parts_to_throw_insert
如果单个分区中的活动部件数量超过了parts_to_throw_insert 值,则 INSERT 会中断,出现 Too many parts (N). Merges are processing significantly slower than inserts 异常。
可

在使用Datax向ClickHouse快速插入数据时遇到Toomanyparts异常,这是由于插入速度过快导致大量parts文件未及时合并。解决方案包括降低写入并发数和增大batchSize,或者调整ClickHouse配置如parts_to_delay_insert和parts_to_throw_insert到600,然后重启服务。这样做可以减少异常发生,但也可能影响SELECT性能。
最低0.47元/天 解锁文章
3567

被折叠的 条评论
为什么被折叠?



