我使用以下脚本在clickhouse上创建了一个字典:
CREATE DICTIONARY IF NOT EXISTS default.testDICT
(
-- attributes
)
PRIMARY KEY DATETIME, SOMEID, SOMEID2
SOURCE(CLICKHOUSE(HOST 'localhost' PORT 9000 USER 'default' PASSWORD '' DB 'default' TABLE 'test'))
LIFETIME(MIN 0 MAX 300)
LAYOUT(COMPLEX_KEY_HASHED())
表测试大约有1900000行。
当我尝试执行选择
SELECT * FROM testDICT
,如果我理解的很好,它也会加载字典,它会向我发送以下错误:
Exception on client:
Code: 32. DB::Exception: Attempt to read after eof: while receiving packet from clickhouse-server:9000
Connecting to clickhouse-server:9000 as user default.
Code: 210. DB::NetException: Connection refused (clickhouse-server:9000)
你知道这是什么意思吗?我怎样才能纠正它?
2条答案
按热度按时间nfg76nw01#
1.9亿行对一本字典来说太多了。可能需要10-20gb内存。
所以你的老兄撞死了或者被凶手杀了。检查
sudo dmesg|tail -100
尝试缓存字典布局,一次只将19 000 000的一部分加载到内存中。wkyowqbh2#
正如本博客所建议的,在插入之前,请尝试执行以下操作:
set max_insert_threads=32;
我第一次也遇到了同样的错误,但是在我更改了max\u insert\u线程之后,我成功地插入了将近200gb的数据。https://altinity.com/blog/clickhouse-and-redshift-face-off-again-in-nyc-taxi-rides-benchmark