AvroConfluent
Input | Output | Alias |
---|---|---|
✔ | ✗ |
説明
AvroConfluentは、KafkaおよびConfluent Schema Registryで一般的に使用される単一オブジェクトのAvroメッセージのデコードをサポートしています。
各AvroメッセージはスキーマIDを埋め込んでおり、スキーマレジストリの助けを借りて実際のスキーマに解決できます。
スキーマは、一度解決されるとキャッシュされます。
データ型の一致
以下のテーブルは、Apache Avro フォーマットがサポートするすべてのデータ型と、それに対応する ClickHouse のdata types を INSERT
と SELECT
クエリに示しています。
Avro データ型 INSERT | ClickHouse データ型 | Avro データ型 SELECT |
---|---|---|
boolean , int , long , float , double | Int(8\16\32), UInt(8\16\32) | int |
boolean , int , long , float , double | Int64, UInt64 | long |
boolean , int , long , float , double | Float32 | float |
boolean , int , long , float , double | Float64 | double |
bytes , string , fixed , enum | String | bytes または string * |
bytes , string , fixed | FixedString(N) | fixed(N) |
enum | Enum(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, …) ** |
null | Nullable(Nothing) | null |
int (date) *** | Date, Date32 | int (date) *** |
long (timestamp-millis) *** | DateTime64(3) | long (timestamp-millis) *** |
long (timestamp-micros) *** | DateTime64(6) | long (timestamp-micros) *** |
bytes (decimal) *** | DateTime64(N) | bytes (decimal) *** |
int | IPv4 | int |
fixed(16) | IPv6 | fixed(16) |
bytes (decimal) *** | Decimal(P, S) | bytes (decimal) *** |
string (uuid) *** | UUID | string (uuid) *** |
fixed(16) | Int128/UInt128 | fixed(16) |
fixed(32) | Int256/UInt256 | fixed(32) |
record | Tuple | record |
* 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 論理データ型:
time-millis
time-micros
duration
使用例
スキーマの解決を迅速に確認するために、kafkacatをclickhouse-localと一緒に使用することができます。
AvroConfluent
をKafkaと一緒に使用するには:
フォーマット設定
スキーマレジストリURLはformat_avro_schema_registry_url
で設定されます。
format_avro_schema_registry_url
を設定することで、再起動後もその値を維持するためにusers.xml
に設定する必要があります。また、Kafka
テーブルエンジンのformat_avro_schema_registry_url
設定を使用することもできます。
設定 | 説明 | デフォルト |
---|---|---|
input_format_avro_allow_missing_fields | Avro/AvroConfluent形式の場合:スキーマにフィールドが見つからないとき、エラーの代わりにデフォルト値を使用する | 0 |
input_format_avro_null_as_default | Avro/AvroConfluent形式の場合:nullおよび非Nullableカラムの場合にデフォルトを挿入する | 0 |
format_avro_schema_registry_url | AvroConfluent形式の場合:Confluent Schema RegistryのURL。 |