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

AvroConfluent

InputOutputAlias

説明

AvroConfluentは、KafkaおよびConfluent Schema Registryで一般的に使用される単一オブジェクトのAvroメッセージのデコードをサポートしています。
各AvroメッセージはスキーマIDを埋め込んでおり、スキーマレジストリの助けを借りて実際のスキーマに解決できます。
スキーマは、一度解決されるとキャッシュされます。

データ型の一致

以下のテーブルは、Apache Avro フォーマットがサポートするすべてのデータ型と、それに対応する ClickHouse のdata typesINSERTSELECT クエリに示しています。

Avro データ型 INSERTClickHouse データ型Avro データ型 SELECT
boolean, int, long, float, doubleInt(8\16\32), UInt(8\16\32)int
boolean, int, long, float, doubleInt64, UInt64long
boolean, int, long, float, doubleFloat32float
boolean, int, long, float, doubleFloat64double
bytes, string, fixed, enumStringbytes または string *
bytes, string, fixedFixedString(N)fixed(N)
enumEnum(8\16)enum
array(T)Array(T)array(T)
map(V, K)Map(V, K)map(string, K)
union(null, T), union(T, null)Nullable(T)union(null, T)
union(T1, T2, …) **Variant(T1, T2, …)union(T1, T2, …) **
nullNullable(Nothing)null
int (date) ***Date, Date32int (date) ***
long (timestamp-millis) ***DateTime64(3)long (timestamp-millis) ***
long (timestamp-micros) ***DateTime64(6)long (timestamp-micros) ***
bytes (decimal) ***DateTime64(N)bytes (decimal) ***
intIPv4int
fixed(16)IPv6fixed(16)
bytes (decimal) ***Decimal(P, S)bytes (decimal) ***
string (uuid) ***UUIDstring (uuid) ***
fixed(16)Int128/UInt128fixed(16)
fixed(32)Int256/UInt256fixed(32)
recordTuplerecord

* bytes はデフォルトで、output_format_avro_string_column_pattern を設定することで制御されます。

** Variant type はフィールド値として null を暗黙的に受け入れるため、例えば Avro の union(T1, T2, null)Variant(T1, T2) に変換されます。 その結果、ClickHouse から Avro を生成する際には、スキーマ推論中に実際に値が null であるかどうかわからないため、常に Avro union 型セットに null 型を含める必要があります。

*** Avro logical types

サポートされていない Avro 論理データ型:

  • time-millis
  • time-micros
  • duration

使用例

スキーマの解決を迅速に確認するために、kafkacatclickhouse-localと一緒に使用することができます。

AvroConfluentKafkaと一緒に使用するには:

フォーマット設定

スキーマレジストリURLはformat_avro_schema_registry_urlで設定されます。

注記

format_avro_schema_registry_urlを設定することで、再起動後もその値を維持するためにusers.xmlに設定する必要があります。また、Kafkaテーブルエンジンのformat_avro_schema_registry_url設定を使用することもできます。

設定説明デフォルト
input_format_avro_allow_missing_fieldsAvro/AvroConfluent形式の場合:スキーマにフィールドが見つからないとき、エラーの代わりにデフォルト値を使用する0
input_format_avro_null_as_defaultAvro/AvroConfluent形式の場合:nullおよび非Nullableカラムの場合にデフォルトを挿入する0
format_avro_schema_registry_urlAvroConfluent形式の場合:Confluent Schema RegistryのURL。