Skip to main content

説明

Apache Avro は、効率的なデータ処理のためにバイナリエンコーディングを使用する行指向のシリアライゼーションフォーマットです。Avro フォーマットは、Avroデータファイル の読み取りと書き込みをサポートします。このフォーマットは、スキーマが埋め込まれた自己記述型メッセージを前提としています。Avro をスキーマレジストリとともに使用する場合は、AvroConfluent フォーマットを参照してください。

データ型マッピング

次の表は、Apache Avro フォーマットでサポートされるすべてのデータ型と、INSERT および SELECT クエリでそれぞれに対応する ClickHouse のデータ型を示しています。 ** Variant 型null をフィールド値として暗黙的に受け入れるため、たとえば Avro の union(T1, T2, null)Variant(T1, T2) に変換されます。 そのため、ClickHouse から Avro を生成する際には、Avro の union 型の候補に常に null 型を含める必要があります。これは、スキーマ推論の時点では、実際に null となる値があるかどうか分からないためです。 *** Avro 論理型 サポートされていない Avro 論理データ型:
  • time-millis
  • time-micros
  • duration

フォーマット設定

Avroデータの読み取り

AvroファイルからClickHouseのテーブルにデータを読み込むには:
取り込まれる Avro ファイルのルートスキーマは、record 型でなければなりません。 テーブルのカラムと Avro スキーマのフィールドの対応関係を特定するために、ClickHouse はそれらの名前を比較します。 この比較では大文字と小文字が区別され、使用されないフィールドはスキップされます。 ClickHouse テーブルのカラムのデータ型は、挿入される Avro データ内の対応するフィールドと異なる場合があります。データを挿入する際、ClickHouse は上の表に従ってデータ型を解釈し、その後、データを対応するカラム型にCASTします。 データのインポート中に、スキーマ内にフィールドが見つからず、かつ設定 input_format_avro_allow_missing_fields が有効になっている場合は、エラーをスローする代わりにデフォルト値が使用されます。

Avroデータの書き込み

ClickHouseのテーブルからAvroファイルにデータを書き込むには、次のようにします。
カラム名は次の条件を満たす必要があります。
  • [A-Za-z_] で始まること
  • 以降に使用できるのは [A-Za-z0-9_] のみであること
Avro ファイルの出力圧縮と同期間隔 は、それぞれ output_format_avro_codec 設定と output_format_avro_sync_interval 設定を使用して構成できます。

Avro スキーマの推定

ClickHouse の DESCRIBE 関数を使うと、次の例のように、Avro ファイルの推定フォーマットをすばやく確認できます。 この例には、ClickHouse の S3 パブリックバケットで公開されている Avro ファイルの URL が含まれています。
最終更新日 2026年7月23日