Clickhouse从csv DB :: NetException导入数据:在写入套接字时,对等重置连接

时间:2019-05-15 19:52:05

标签: clickhouse

我正在尝试通过以下方式将* .gz文件加载到Clickhouse: clickhouse-client --max_memory_usage = 15323460608 --format_csv_delimiter =“ |” --query =“ INSERT INTO tmp1.my_test)表格式CSV”

我收到错误消息:代码:210。DB :: NetException:在写入套接字(127.0.0.1:9000)时,同级重置了连接。

clickhouse-server.log,clickhouse-server.err.log或zookeeper.log中没有错误

运行insert命令时,我看到内存几乎达到服务器的极限(32Gb),这就是为什么我试图通过max_memory_usage来限制它,同样的错误

有什么想法吗? 预先感谢

2 个答案:

答案 0 :(得分:1)

如前所述,这是一个内存问题。添加 --max_memory_usage=10000000000 对我有用

答案 1 :(得分:0)

问题可能是您要在几天内对数据进行分区,而批量插入CSV中的日期过多。尝试在表创建中删除PARTITION BY到YYYYMMDD(business_ts)规范。当插入我的一张桌子时,我注意到一个类似的问题。在添加--max_memory_usage参数之前,我得到的错误与您在此处报告的错误完全相同:代码:210。DB :: NetException:对等重置连接,同时写入套接字(127.0.0.1:9000)

然后我添加了--max_memory_usage = 15000000000,并且收到了一条更有用的错误消息:

从服务器(版本20.11.5)收到的异常: 代码:252。DB :: Exception:从localhost:9000接收。 DB :: Exception:一个INSERT块的分区太多(超过100个)。该限制由“ max_partitions_per_insert_block”设置控制。大量分区是一个常见的误解。这将导致严重的负面性能影响,包括服务器启动缓慢,INSERT查询缓慢和SELECT查询缓慢。表的分区总数建议为1000..10000以下。请注意,分区并非旨在加快SELECT查询的速度(ORDER BY键足以使范围查询快速进行)。分区用于数据操作(DROP分区等)。

正如更有用的错误消息所指出的那样,PARTITION不能帮助提高SELECT性能。确实可以帮助更有效地促进非查询操作。我不知道您的用例的所有细节,但是同时对spin_ts和business_ts进行​​ORDER并在business_ts上放置PARTITION也许是有意义的。