Перейти к основному содержанию

Устранение ошибки “Cannot Append Data in Parquet Format” в ClickHouse

Возникает ошибка “Cannot append data in format Parquet to file” в ClickHouse? Обычно она выглядит так: DB::Exception: Cannot append data in format Parquet to file, because this format doesn't support appends. (CANNOT_APPEND_TO_FILE) Предположим, вы создаёте таблицу с движком таблицы File в формате Parquet.
CREATE TABLE parquet_test
(
    `x` UInt32,
    `y` String
)
ENGINE = File(Parquet)
В таблицу можно записать данные только один раз:
INSERT INTO parquet_test VALUES
   (1, 'Hello'),
   (2, 'Hi')
Это создаст файл data.Parquet в папке data/default/parquet_test. Если вы попытаетесь вставить ещё один батч:
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.
Последнее изменение 10 июня 2026 г.