Raw Format
功能描述
Raw format 允许读写原始(基于字节)值作为单个列。
- Raw Format将 null 值编码成 byte[] 类型的 null。这样在 upsert-kafka 中使用时可能会有限制,因为 upsert-kafka 将 null 值视为 墓碑消息(在键上删除)。因此,如果该字段可能具有 null 值,我们建议避免使用 upsert-kafka 连接器和 raw format 作为 value.format。
- Raw format 连接器是内置的。更多具体使用可参考开源社区文档:Raw Format。
支持的Connector
- Kafka
- Upsert Kafka
- Filesystem
参数说明
参数 |
是否必选 |
默认值 |
类型 |
描述 |
---|---|---|---|---|
format |
是 |
(none) |
String |
指定要使用的格式, 这里应该是 'raw'。 |
raw.charset |
否 |
UTF-8 |
String |
指定字符集来编码文本字符串。 |
raw.endianness |
否 |
big-endian |
String |
指定字节序来编码数字值的字节。有效值为'big-endian'和'little-endian'。 更多细节可查阅 字节序。 |
数据类型映射
下表详细说明了这种格式支持的 SQL 类型,包括用于编码和解码的序列化类和反序列化类的详细信息。
Flink SQL 类型 |
值 |
---|---|
CHAR / VARCHAR / STRING |
UTF-8(默认)编码的文本字符串。编码字符集可以通过 'raw.charset' 进行配置。 |
BINARY / VARBINARY / BYTES |
字节序列本身。 |
BOOLEAN |
表示布尔值的单个字节,0表示 false, 1 表示 true。 |
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 序列化的字节序列。 |
示例
使用kafka发送数据,输出到print中。
- 根据kafka所在的虚拟私有云和子网创建相应的跨源,并绑定所要使用的队列。然后设置安全组,入向规则,使其对当前将要使用的队列放开,并根据kafka的地址测试队列连通性(通用队列 > 找到作业的所属队列 > 更多 > 测试地址连通性 > 输入kafka的地址 > 测试)。如果能连通,则表示跨源已经绑定成功;否则表示未成功。
- 创建flink opensource sql作业,选择flink1.15,并提交运行,其代码如下:
CREATE TABLE kafkaSource ( log string ) WITH ( 'connector' = 'kafka', 'topic' = 'kafkaTopic', 'properties.bootstrap.servers' = 'KafkaAddress1:KafkaPort,KafkaAddress2:KafkaPort', 'properties.group.id' = 'GroupId', 'scan.startup.mode' = 'latest-offset', 'format' = 'raw' ); CREATE TABLE printSink ( log string ) WITH ( 'connector' = 'print' ); insert into printSink select * from kafkaSource;
- 向kafka的相应topic中插入下列数据:
47.29.201.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.0.3626.119 Safari/537.36" "2.75"
- 按照如下方式查看taskmanager.out文件中的数据结果:
- 登录DLI管理控制台,选择“作业管理 > Flink作业”。
- 单击对应的Flink作业名称,选择“运行日志”,单击“OBS桶”,根据作业运行的日期,找到对应日志的文件夹。
- 进入对应日期的文件夹后,找到名字中包含“taskmanager”的文件夹进入,下载获取.out文件查看结果日志。
+I[47.29.201.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.0.3626.119 Safari/537.36" "2.75"]