文档

Raw

更新时间:

本文为您介绍Raw格式的使用方法、配置选项和类型映射。

背景信息

Raw格式允许读写基于字节的原始值作为单个列。Raw格式连接器是内置的。支持Raw格式的连接器包括消息队列KafkaUpsert Kafka对象存储OSS

使用方法

例如,在Kafka中具有以下原始格式的日志数据,并希望使用Flink SQL读取和分析此类数据。

47.xx.xx.179 - - [28/Feb/2019:13:17:10 +0000] "GET /?p=1 HTTP/2.0" 200 5316 "https://domain.com/?p=1" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.xx.xx.119 Safari/537.36" "2.75"

使用Raw格式以UTF-8编码的形式从中读取Kafka topic作为匿名字符串值的示例如下:

CREATE TABLE nginx_log (
  log STRING
) WITH (
  'connector' = 'kafka',
  'topic' = 'nginx_log',
  'properties.bootstrap.servers' = 'localhost:9092',
  'properties.group.id' = 'testGroup',
  'format' = 'raw'
);

通过上述语句将原始数据读取为纯字符串后,可以使用自定义函数将字符串拆分为多个字符串并进行进一步分析,例如以下SQL语句当中的my_split函数。

SELECT t.hostname, t.datetime, t.url, t.browser, ...
FROM(
  SELECT my_split(log) as t FROM nginx_log
);

同样地,可以将一个STRING类型的列以UTF-8编码的匿名字符串值写入Kafka topic。

配置选项

选项

是否必选

默认值

类型

说明

format

(none)

String

声明使用的格式。使用Raw格式时,参数取值为raw。

raw.charset

UTF-8

String

指定文本字符串的编码字符集。默认值为UTF-8。

raw.endianness

big-endian

String

指定数字值的字节的编码字节序。参数取值如下:

  • big-endian(默认值)

  • little-endian

类型映射

Raw格式支持的Flink SQL类型如下。

Flink SQL类型

CHAR / VARCHAR / STRING

UTF-8(默认)编码的文本字符串。

说明

编码字符集可以通过raw.charset进行配置。

BINARY / VARBINARY / BYTES

字节序列。

BOOLEAN

布尔值的单个字节。

TINYINT

有符号数值的单个字节。

SMALLINT

采用big-endian(默认)编码的两个字节。

说明

字节序可以通过raw.endianness配置。

INT

采用big-endian(默认)编码的四个字节。

说明

字节序可以通过raw.endianness配置。

BIGINT

采用big-endian(默认)编码的八个字节。

说明

字节序可以通过raw.endianness配置。

FLOAT

采用IEEE 754格式和big-endian(默认)编码的四个字节。

说明

字节序可以通过raw.endianness配置。

DOUBLE

采用IEEE 754格式和big-endian(默认)编码的八个字节。

说明

字节序可以通过raw.endianness配置。

RAW

通过RAW类型的底层TypeSerializer进行序列化的字节序列。

其他使用说明

Raw格式将NULL值编码成byte[]类型的NULL,Upsert-Kafka会将NULL值视为墓碑消息,在键上删除该值。因此,如果该字段具有NULL值,建议避免使用Upsert-Kafka连接器和Raw格式作为value.format。

  • 本页导读 (1)