Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

ClickHouseで「Cannot Append Data in Parquet Format」エラーを解消する

ClickHouse で "Cannot Append Data in Parquet Format" エラーを解消する

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 しようとすると:

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 file に追記できません。ただし、engine_file_allow_create_multiple_files 設定を有効にすると、INSERT ごとに新しいファイルを作成するよう ClickHouse に指示できます。有効にすると、insert のたびに次の pattern に従った名前で新しいファイルが作成されます。

data.Parquet -> data.1.Parquet -> data.2.Parquet など:

実際に試してみましょう。2 つのコマンドを parquet.sql という 1 つのファイルにまとめます。

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 に 2 つのファイルが表示されます (以降の insert ごとに、新しいファイルが 1 つずつ作成されます) 。

Navigation