View a markdown version of this page

数据交付概念 - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

数据交付概念

使用本主题来查看 Amazon Kinesis 数据流中流式传输表和 Amazon S3 交付的关键概念。

数据新鲜度

数据新鲜度定义了 Kinesis Data Streams 在将传入记录传送到目标之前缓冲这些记录的最长时间(以秒为单位)。您可以在 300 到 900 秒(5 到 15 分钟)之间配置数据新鲜度。默认值为 300 秒。

  • 较低的价值 -以较小的批量更快地交付到目的地。

  • 更高的值 — 批处理效率更高,在目标位置生成的文件更少、更大。

直播表的输入格式

在 Apache Iceberg 上传输到流媒体表时,数据传输支持以下输入记录格式。两种格式都需要 Amazon Glue 架构注册表。

  • JSON — 纯的 JSON 记录。您必须提供引用在 Amazon Glue 架构注册表中注册的架构的GSRSchemaARN(架构注册表 Amazon Glue 架构的)。

  • GSR_JSON(Amazon Glue 架构注册表 JSON)— 每条记录中都嵌入了架构 ID 的 JSON 记录。该架构是从架 Amazon Glue 构注册表自动解析的。

通用 Amazon S3 存储桶的输入格式

当传输到通用的 Amazon S3 存储桶时,数据传输支持以下输入记录格式。不需要架构注册表。

  • JSON — 纯的 JSON 记录。

  • STRIN UTF-8 G — 字符串记录。

  • BYTE_ARRAY — 原始二进制记录。

注意

通用的 Amazon S3 存储桶不支持该GSR_JSON格式。它只能交付到Apache Iceberg上的直播桌。

架构执行

对于 Apache Iceberg 上的流式传输表,每条记录都要根据架构注册表中注册的 Amazon Glue 架构进行验证。不符合架构的记录不会传送到您的流媒体表中。故障元数据被写入死信队列以进行故障排除。数据交付不支持架构演变。这包括添加新字段、移除现有字段、重命名字段或更改字段数据类型。

没有回填

您的目的地仅接收在您创建流式表或配置 S3 交付后生成的记录。直播中的现有记录不会被回填。

每次配送都有新桌子

每次直播表交付都会在目的地创建自己的 Iceberg 表。不支持传送到现有表。您在调用CreateChannel时指定表存储桶 ARN、命名空间和表名称。

Dead-letter 队列

死信队列捕获有关无法成功传送的记录的信息。

  • 在 Apache Iceberg 上直播表格 — 需要死信队列。您必须为失败的记录指定 S3 存储桶和前缀。

  • 通用 Amazon S3 存储桶 — 死信队列是可选的。如果未指定,则默认为带有错误前缀的相同目标存储桶。

死信队列包含记录标识符和错误上下文,而不是完整的记录有效载荷。

内联压缩

数据交付通过将分片中的记录聚合到最佳大小的文件中来执行行内压缩。这减少了目标位置的小文件数量并提高了查询性能。

配送状态

交付在其生命周期中会经历以下状态:

  • 正在创建 — 正在配置交付。

  • 活跃 — 交付正在交付记录。

  • 更新 — 配置更改正在进行中。

  • 正在删除 — 正在移除配送。

  • 失败 -交付遇到无法恢复的错误。

Append-only 交货

配送仅限追加。不支持更新和更新。流中的每条记录都作为新行写入到目的地。