“单个插入块的分区太多”

tzdcorbm  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(410)

在将复制的mysql数据库重新加载到clickhouse的过程中,使用“clickhouse mysql”时,我遇到了“单个insert块的分区太多”的问题,似乎无法继续。
到目前为止,我尝试过的一些事情:
将“max\u partitions\u per\u insert\u block”设置为零,以查看是否可以通过。
将--mempool max行数设置为5000、10.000和20.000,以便跳过100.000的默认加载
创建表时使用partition by toyyyymmdd(created)
clickhouse表创建为,这与自动创建(--create table)非常相似,只是它确实缺少一些可为null的类型:

CREATE TABLE DB.DB__main (
`id` Int64,
 `user_id` Int64,
 `screenname` String,
 `created` DateTime,
 `tweet_id` Int64,
 `tweet` String,
 `retweet_count` Nullable(Int32),
 `mediastatus` Nullable(String),
 `country` Nullable(String),
 `countrycode` Nullable(String),
 `city` Nullable(String),
 `latitude0` Nullable(String),
 `longitude0` Nullable(String),
 `latitude1` Nullable(String),
 `longitude1` Nullable(String),
 `latitude2` Nullable(String),
 `longitude2` Nullable(String),
 `latitude3` Nullable(String),
 `longitude3` Nullable(String),
 `datetime` DateTime,
 `datetime_update` Nullable(DateTime),
 `status` Nullable(String),
 `div0` Nullable(String),
 `div1` Nullable(String),
 `div2` Nullable(Int64),
 `datasource` Nullable(String)
) ENGINE = ReplacingMergeTree() PARTITION BY toYYYYMM(created) ORDER BY (id, user_id, screenname, created, tweet_id, datetime)

另外,为什么模式会得到重复的db.db\uu tablename?当我第一次开始使用clickhouse和clickhouse mysql时,我遇到了一个奇怪的情况——创建表。它在开始迁移内容时停止了,过了一段时间我才意识到表名从“schema”.“table name”更改为“schema”.“schema\u table-name”。重命名表名之后--migrate表就可以运行了。

ljo96ir5

ljo96ir51#

每个插入块的最大分区数—限制单个插入块中的最大分区数。零意味着无限。如果块包含太多分区,则引发异常。此设置是一个安全阈值,因为使用大量分区是一个常见的误解。
默认情况下,每个插入块的最大分区数=100
所以呢 PARTITION BY toYYYYMMDD(created) 如果您的插入时间超过100天,则插入将失败。 PARTITION BY toYYYYMM(created) 如果您的insert覆盖100个月以上,则您的insert将失败。
nullable—占用两倍的磁盘空间,比notnullable慢两倍。
schema get repeated db.db\uu tablename——询问clickhouse mysql的创建者altinity——看起来像个bug。

相关问题