This documentation is for an unreleased version of Apache Flink. We recommend you use the latest stable version.
Avro
Avroフォーマット #
Format: Serialization Schema Format: Deserialization Schema
Apache Avroフォーマットを使って、Avroスキーマに基づいたAvroデータを読み書きできます。現在、Avroスキーマはテーブルスキーマから派生しています。
依存 #
In order to use the Avro format the following dependencies are required for both projects using a build automation tool (such as Maven or SBT) and SQL Client with SQL JAR bundles.
Maven dependency | SQL Client |
---|---|
|
Only available for stable releases. |
Avro形式を持つテーブルの作成法 #
ここでは、KafkaコネクタとAvro形式を使ってテーブルを作成する方法を示します。
CREATE TABLE user_behavior (
user_id BIGINT,
item_id BIGINT,
category_id BIGINT,
behavior STRING,
ts TIMESTAMP(3)
) WITH (
'connector' = 'kafka',
'topic' = 'user_behavior',
'properties.bootstrap.servers' = 'localhost:9092',
'properties.group.id' = 'testGroup',
'format' = 'avro'
)
フォーマットオプション #
オプション | 必要条件 | Forwarded | デフォルト | 種類 | 説明 |
---|---|---|---|---|---|
形式 |
必須 | no | (none) | 文字列 | 使うフォーマットを指定します。ここでは、'avro' にする必要があります。 |
avro.codec |
オプション | はい | (none) | 文字列 | }}">Filesystemのみ。avroの圧縮コーデック。デフォルトとしてのSanappy圧縮。有効なenumerationsは、null、deflate、snappy、bzip2、xzです。 |
データ型マッピング #
現在、Avroスキーマは常にテーブルスキーマから派生します。Avroスキーマの明示的な定義はまだサポートされません。 したがって、次の表は、Flink型からAvro型へのマッピングを一覧表示しています。
Flink SQL型 | Avroの型 | Avroの論理型 |
---|---|---|
CHAR / VARCHAR / STRING | 文字列 | |
BOOLEAN |
boolean |
|
BINARY / VARBINARY |
bytes |
|
DECIMAL |
fixed |
decimal |
TINYINT |
int |
|
SMALLINT |
int |
|
INT |
int |
|
BIGINT |
long |
|
FLOAT |
float |
|
DOUBLE |
double |
|
DATE |
int |
date |
TIME |
int |
time-millis |
TIMESTAMP |
long |
timestamp-millis |
ARRAY |
array |
|
MAP (キーは、string/char/varchar 型でなければなりません) |
map |
|
MULTISET (要素は、string/char/varchar型でなければなりません) |
map |
|
ROW |
record |
上記の型に加えて、Flinkはnll許容型の読み取りをサポートします。Flinkは、null許容型をAvro union(something, null)
にマップします。something
はFlink型から変換されたAvro型です。
Avro型の詳細については、Avro Specificationを参照してください。