clickhouse代码32 db::异常:尝试在eof之后读取

7fyelxc5  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(2)|浏览(2380)

我使用以下脚本在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)

你知道这是什么意思吗?我怎样才能纠正它?

nfg76nw0

nfg76nw01#

1.9亿行对一本字典来说太多了。可能需要10-20gb内存。
所以你的老兄撞死了或者被凶手杀了。检查 sudo dmesg|tail -100 尝试缓存字典布局,一次只将19 000 000的一部分加载到内存中。

wkyowqbh

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

相关问题