解决 ClickHouse 中 “无法以 Parquet 格式追加数据” 错误
·2 分钟阅读
您是否在 ClickHouse 中遇到 “Cannot append data in format Parquet to file” 错误?让我们看看如何解决它。
解决 ClickHouse 中 “无法以 Parquet 格式追加数据” 错误
您是否在 ClickHouse 中遇到 “Cannot append data in format Parquet to file” 错误?
通常,该错误报告为
DB::Exception: Cannot append data in format Parquet to file, because this format doesn't support appends. (CANNOT_APPEND_TO_FILE)
假设您创建一个使用 Parquet 格式的 File
表引擎的表。
CREATE TABLE parquet_test
(
`x` UInt32,
`y` String
)
ENGINE = File(Parquet)
您可以将数据写入表一次
INSERT INTO parquet_test VALUES
(1, 'Hello'),
(2, 'Hi')
这将在 data/default/parquet_test
文件夹中创建一个名为 data.Parquet
的文件。如果您尝试插入另一个批次
INSERT INTO parquet_test VALUES
(3, 'World'),
(4, 'Bye')
...您会收到以下错误
Code: 641. DB::Exception: Received from localhost:9000. DB::Exception: Cannot append data in format Parquet to file, because this format doesn't support appends. You can allow to create a new file on each insert by enabling setting engine_file_allow_create_multiple_files. (CANNOT_APPEND_TO_FILE)
您无法在 ClickHouse 中追加到 Parquet 文件。但是,您可以告诉 ClickHouse 为每个 INSERT
创建一个新文件,方法是启用 engine_file_allow_create_multiple_files
设置。如果启用,则每次插入都会创建一个新文件,其名称遵循以下模式
data.Parquet
-> data.1.Parquet
-> data.2.Parquet
等。
让我们试一试。我们将把两个命令放入一个名为 parquet.sql
的文件中
SET engine_file_allow_create_multiple_files = 1;
INSERT INTO default.parquet_test VALUES (3, 'World'), (4, 'Bye');
使用 clickhouse-client
运行它
./clickhouse client --queries-file parquet.sql
现在您将在 data/default/parquet_test
中看到两个文件(以及每个后续插入的新文件)。
注意
engine_file_allow_create_multiple_files
设置适用于其他不可追加的数据格式,例如 JSON 和 ORC。