全部產品
Search
文件中心

Realtime Compute for Apache Flink:Avro

更新時間:Apr 30, 2025

本文為您介紹Avro格式的使用樣本、配置選項和類型映射。

背景資訊

Avro格式允許基於Avro的結構讀寫Avro資料。當前,Avro結構是基於表結構推導而來的。支援Avro格式的連接器包括訊息佇列KafkaUpsert KafkaObject Storage Service

使用樣本

利用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'
)

配置選項

參數

是否必選

預設值

類型

描述

format

(none)

String

聲明使用的格式。使用Avro格式時,參數取值為avro。

avro.codec

(none)

String

指定Avro壓縮的轉碼器,僅適用於連接器為Filesystem的情況。參數取值如下:

  • snappy(預設值)

  • null

  • deflate

  • bzip2

  • xz

類型映射

Flink與Avro的資料類型的映射關係如下。

Flink SQL類型

Avro類型

CHAR / VARCHAR / STRING

string

BOOLEAN

boolean

BINARY / VARBINARY

bytes

DECIMAL

bytes

說明

帶有精度的十進位數。

TINYINT

int

SMALLINT

int

INT

int

BIGINT

long

FLOAT

float

DOUBLE

double

DATE

int

說明

日期。

TIME

int

說明

以毫秒為單位的時間。

TIMESTAMP

long

說明

以毫秒為單位的時間戳記。

ARRAY

array

MAP

說明

元素必須是STRING、CHAR或VARCHAR類型。

map

MULTISET

說明

元素必須是STRING、CHAR或VARCHAR類型。

map

ROW

record

除了以上類型,Flink支援讀取和寫入nullable的類型。Flink將nullable的類型映射到Avro union(something, null),其中something是從Flink類型轉換的Avro類型。

說明

關於Avro類型的資訊,詳情請見Avro 規範