河北常见网站建设价格,献县做网站价格,网站建设 分类广告,wordpress4.7不支持tagFlink系列之#xff1a;Table API Connectors之Raw Format 一、Raw Format二、示例三、Format 参数四、数据类型映射 一、Raw Format
Raw format 允许读写原始#xff08;基于字节#xff09;值作为单个列。注意: 这种格式将 null 值编码成 byte[] 类型的 null。这样在 ups… Flink系列之Table API Connectors之Raw Format 一、Raw Format二、示例三、Format 参数四、数据类型映射 一、Raw Format
Raw format 允许读写原始基于字节值作为单个列。注意: 这种格式将 null 值编码成 byte[] 类型的 null。这样在 upsert-kafka 中使用时可能会有限制因为 upsert-kafka 将 null 值视为 墓碑消息在键上删除。因此如果该字段可能具有 null 值我们建议避免使用 upsert-kafka 连接器和 raw format 作为 value.format。Raw format 连接器是内置的。
二、示例
例如你可能在 Kafka 中具有原始日志数据并希望使用 Flink SQL 读取和分析此类数据。
47.29.201.179 - - [28/Feb/2019:13:17:10 0000] GET /?p1 HTTP/2.0 200 5316 https://domain.com/?p1 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36 2.75下面的代码创建了一张表使用 raw format 以 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
)然后你可以将原始数据读取为纯字符串之后使用用户自定义函数将其分为多个字段进行进一步分析。例如 示例中的 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 参数
参数是否必选默认值类型描述format必选(none)String指定要使用的格式, 这里应该是 ‘raw’。raw.charset可选UTF-8String指定字符集来编码文本字符串。raw.endianness可选big-endianString指定字节序来编码数字值的字节。有效值为’big-endian’和’little-endian’。
四、数据类型映射
下表详细说明了这种格式支持的 SQL 类型包括用于编码和解码的序列化类和反序列化类的详细信息。
Flink SQL类型值CHAR / VARCHAR / STRINGUTF-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 序列化的字节序列。