メインコンテンツまでスキップ
メインコンテンツまでスキップ

Parquet

入力出力エイリアス

説明

Apache Parquet は、Hadoop エコシステムで広く使用されている列指向ストレージフォーマットです。ClickHouse はこのフォーマットの読み書き操作をサポートしています。

データ型の一致

以下の表は、サポートされているデータ型と、それが ClickHouse の データ型 にどのように一致するかを示しています。これは INSERTSELECT クエリに関連しています。

Parquet データ型(INSERTClickHouse データ型Parquet データ型(SELECT
BOOLBoolBOOL
UINT8, BOOLUInt8UINT8
INT8Int8/Enum8INT8
UINT16UInt16UINT16
INT16Int16/Enum16INT16
UINT32UInt32UINT32
INT32Int32INT32
UINT64UInt64UINT64
INT64Int64INT64
FLOATFloat32FLOAT
DOUBLEFloat64DOUBLE
DATEDate32DATE
TIME (ms)DateTimeUINT32
TIMESTAMP, TIME (us, ns)DateTime64TIMESTAMP
STRING, BINARYStringBINARY
STRING, BINARY, FIXED_LENGTH_BYTE_ARRAYFixedStringFIXED_LENGTH_BYTE_ARRAY
DECIMALDecimalDECIMAL
LISTArrayLIST
STRUCTTupleSTRUCT
MAPMapMAP
UINT32IPv4UINT32
FIXED_LENGTH_BYTE_ARRAY, BINARYIPv6FIXED_LENGTH_BYTE_ARRAY
FIXED_LENGTH_BYTE_ARRAY, BINARYInt128/UInt128/Int256/UInt256FIXED_LENGTH_BYTE_ARRAY

配列はネスト可能で、引数として Nullable 型の値を持つことができます。TupleMap 型もネスト可能です。

サポートされていない Parquet データ型は次の通りです:

  • FIXED_SIZE_BINARY
  • JSON
  • UUID
  • ENUM.

ClickHouse テーブルのカラムのデータ型は、挿入される Parquet データの対応するフィールドと異なる場合があります。データを挿入する際、ClickHouse は上記の表に従ってデータ型を解釈し、その後に キャスト を行い、ClickHouse テーブルカラムに設定されたデータ型にデータを変換します。

使用例

データの挿入と選択

次のコマンドを使用して、ファイルから ClickHouse テーブルに Parquet データを挿入できます:

次のコマンドを使用して、ClickHouse テーブルからデータを選択し、Parquet 形式のファイルに保存できます:

Hadoop とのデータ交換には、HDFS テーブルエンジン を使用できます。

フォーマット設定

設定説明デフォルト
input_format_parquet_case_insensitive_column_matchingParquet カラムと CH カラムの一致の際に大文字と小文字を無視します。0
input_format_parquet_preserve_orderParquet ファイルから読み込むときに行の順序を再編成しないようにします。通常、これにより非常に遅くなります。0
input_format_parquet_filter_push_downParquet ファイルを読み込む際に、WHERE/PREWHERE 式および Parquet メタデータ内の最小/最大統計に基づいて、全行グループをスキップします。1
input_format_parquet_bloom_filter_push_downParquet ファイルを読み込む際に、WHERE 式と Parquet メタデータ内のブloom フィルターに基づいて、全行グループをスキップします。0
input_format_parquet_use_native_readerParquet ファイルを読み込む際に、arrow リーダーの代わりにネイティブリーダーを使用します。0
input_format_parquet_allow_missing_columnsParquet 入力フォーマットの読み込み時に、欠落カラムを許可します。1
input_format_parquet_local_file_min_bytes_for_seekParquet 入力フォーマットでのシークを行うために必要なローカル読み取り(ファイル)に対する最小バイト数、無視して読み込む代わりに。8192
input_format_parquet_enable_row_group_prefetchParquet パース時に行グループのプリフェッチを有効にします。現在は単一スレッドのパースのみがプリフェッチ可能です。1
input_format_parquet_skip_columns_with_unsupported_types_in_schema_inferenceフォーマット Parquet のスキーマ推論の際に、サポートされていない型のカラムをスキップします。0
input_format_parquet_max_block_sizeParquet リーダーの最大ブロックサイズ。65409
input_format_parquet_prefer_block_bytesParquet リーダーによって出力される平均ブロックバイト数。16744704
output_format_parquet_row_group_size行数における目標行グループサイズ。1000000
output_format_parquet_row_group_size_bytes圧縮前のバイト数における目標行グループサイズ。536870912
output_format_parquet_string_as_string文字列カラムに対して、Binary の代わりに Parquet String 型を使用します。1
output_format_parquet_fixed_string_as_fixed_byte_arrayFixedString カラムに対して、Binary の代わりに Parquet FIXED_LENGTH_BYTE_ARRAY 型を使用します。1
output_format_parquet_version出力フォーマット用の Parquet フォーマットバージョン。サポートされているバージョン:1.0、2.4、2.6、2.latest(デフォルト)。2.latest
output_format_parquet_compression_methodParquet 出力フォーマットの圧縮方法。サポートされているコーデック:snappy、lz4、brotli、zstd、gzip、none(非圧縮)。zstd
output_format_parquet_compliant_nested_typesParquet ファイルスキーマにおいて、リスト要素に対して 'item' の代わりに 'element' という名前を使用します。これは Arrow ライブラリの実装の歴史的な遺物です。一般的には互換性を向上させますが、古いバージョンの Arrow にはいくつかの例外があります。1
output_format_parquet_use_custom_encoderより高速な Parquet エンコーダー実装を使用します。1
output_format_parquet_parallel_encoding複数スレッドで Parquet エンコーディングを行います。output_format_parquet_use_custom_encoder が必要です。1
output_format_parquet_data_page_size圧縮前のバイト数における目標ページサイズ。1048576
output_format_parquet_batch_sizeこの行数ごとにページサイズをチェックします。平均値のサイズが数 KB を超えるカラムがある場合は、減少を検討してください。1024
output_format_parquet_write_page_indexParquet ファイルにページインデックスを書くオプションを追加します。1
input_format_parquet_import_nested廃止された設定で、何もしません。0