説明
AvroConfluent フォーマットは、Confluent スキーマレジストリ (または API 互換のサービス) を使用した、Avro エンコード済みメッセージの読み書きをサポートします。
各メッセージは Confluent のワイヤ形式に従います。これは、マジックバイト (0x00) に続いて 4 バイトのビッグエンディアンのスキーマ ID が配置され、その後に Avro のバイナリデータが続く形式です。読み取り時には、ClickHouse はレジストリに問い合わせてスキーマ ID を解決します。書き込み時には、ClickHouse は出力カラムから導出したスキーマを登録し、生成された ID を各行の先頭に付加します。最適なパフォーマンスを得るため、スキーマはキャッシュされます。
データ型マッピング
INSERT および SELECT クエリでそれぞれに対応する ClickHouse のデータ型を示しています。
bytesがデフォルトで、設定output_format_avro_string_column_patternで制御されます
null をフィールド値として暗黙的に受け入れるため、たとえば Avro の union(T1, T2, null) は Variant(T1, T2) に変換されます。
そのため、ClickHouse から Avro を生成する際には、Avro の union 型の候補に常に null 型を含める必要があります。これは、スキーマ推論の時点では、実際に null となる値があるかどうか分からないためです。
*** Avro 論理型
サポートされていない Avro 論理データ型:
time-millistime-microsduration
フォーマット設定
例
Kafka からの読み込み
format_avro_schema_registry_url 設定でスキーマレジストリの URL を指定します。
Kafka への書き込み
Basic認証を使用する
format_avro_schema_registry_url 設定に URL エンコードされた認証情報を指定できます。
トラブルシューティング
system.kafka_consumers システムテーブルをクエリします。デプロイ環境に複数のレプリカがある場合 (例: ClickHouse Cloud) は、clusterAllReplicas テーブル関数を使用する必要があります。