メインコンテンツへスキップ
メインコンテンツへスキップ

Arrow

InputOutputAlias

説明

Apache Arrow には、組み込みのカラムナ型ストレージフォーマットが 2 つ用意されています。ClickHouse はこれらのフォーマットに対する読み書き処理をサポートしています。 Arrow は Apache Arrow の「ファイルモード」フォーマットです。メモリ上でのランダムアクセス向けに設計されています。

データ型の対応関係

次の表は、サポートされているデータ型と、それらが INSERT および SELECT クエリで ClickHouse の データ型 にどのように対応するかを示しています。

Arrow data type (INSERT)ClickHouse data typeArrow data type (SELECT)
BOOLBoolBOOL
UINT8, BOOLUInt8UINT8
INT8Int8/Enum8INT8
UINT16UInt16UINT16
INT16Int16/Enum16INT16
UINT32UInt32UINT32
INT32Int32INT32
UINT64UInt64UINT64
INT64Int64INT64
FLOAT, HALF_FLOATFloat32FLOAT32
DOUBLEFloat64FLOAT64
DATE32Date32UINT16
DATE64DateTimeUINT32
TIMESTAMP, TIME32, TIME64DateTime64TIMESTAMP
STRING, BINARYStringBINARY
STRING, BINARY, FIXED_SIZE_BINARYFixedStringFIXED_SIZE_BINARY
DECIMALDecimalDECIMAL
DECIMAL256Decimal256DECIMAL256
LISTArrayLIST
STRUCTTupleSTRUCT
MAPMapMAP
UINT32IPv4UINT32
FIXED_SIZE_BINARY, BINARYIPv6FIXED_SIZE_BINARY
FIXED_SIZE_BINARY, BINARYInt128/UInt128/Int256/UInt256FIXED_SIZE_BINARY

配列は入れ子(ネスト)にすることができ、引数として Nullable 型の値を持つことができます。Tuple 型および Map 型も入れ子にすることができます。

DICTIONARY 型は INSERT クエリでサポートされており、SELECT クエリに対しては、LowCardinality 型を DICTIONARY 型として出力できるようにする output_format_arrow_low_cardinality_as_dictionary 設定があります。

サポートされていない Arrow データ型は次のとおりです:

  • FIXED_SIZE_BINARY
  • JSON
  • UUID
  • ENUM.

ClickHouse テーブル列のデータ型は、対応する Arrow データフィールドと一致している必要はありません。データを挿入する際、ClickHouse はまず上記の表に従ってデータ型を解釈し、その後、ClickHouse テーブル列に設定されているデータ型へデータをキャストします。

使用例

データの挿入

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

$ cat filename.arrow | clickhouse-client --query="INSERT INTO some_table FORMAT Arrow"

データの選択

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

$ clickhouse-client --query="SELECT * FROM {some_table} FORMAT Arrow" > {filename.arrow}

フォーマット設定

設定説明デフォルト
input_format_arrow_allow_missing_columnsArrow 入力フォーマットの読み取り時に列の欠落を許可する1
input_format_arrow_case_insensitive_column_matchingArrow の列と CH の列を照合する際に大文字小文字を区別しない0
input_format_arrow_import_nested廃止された設定で、何もしない0
input_format_arrow_skip_columns_with_unsupported_types_in_schema_inferenceArrow フォーマットのスキーマ推論時に、未対応の型を持つ列をスキップする0
output_format_arrow_compression_methodArrow 出力フォーマットの圧縮方式。サポートされるコーデック: lz4_frame, zstd, none (非圧縮)lz4_frame
output_format_arrow_fixed_string_as_fixed_byte_arrayFixedString 列に対して Binary 型の代わりに Arrow の FIXED_SIZE_BINARY 型を使用する1
output_format_arrow_low_cardinality_as_dictionaryLowCardinality 型を Dictionary Arrow 型として出力することを有効にする0
output_format_arrow_string_as_stringString 列に対して Binary 型の代わりに Arrow の String 型を使用する1
output_format_arrow_use_64_bit_indexes_for_dictionaryArrow フォーマットのディクショナリインデックスに常に 64 ビット整数を使用する0
output_format_arrow_use_signed_indexes_for_dictionaryArrow フォーマットのディクショナリインデックスに符号付き整数を使用する1