View a markdown version of this page

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

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

直播表交付的工作原理

使用本主题了解流式表传输如何将记录从您的 Amazon Kinesis Data Streams 流发送到由 S3 表存储桶支持的 Apache Iceberg 上的流式表,包括记录转换、目标表创建、分区、数据更新、死信队列和加密。

配送的工作原理

流式传输表按以下步骤将记录发送到 Apache Iceberg 上的流式传输表:

  1. 读取 — 交付从 Kinesis 数据流中的所有分片中读取记录。

  2. 缓冲区 — 交付缓冲区会记录直到达到数据新鲜度间隔。

  3. 验证和转换 — 交付会根据架构注册表中的架构验证每条记录,并将其转换为 Apache Iceberg 表 Amazon Glue 架构。验证失败的记录进入死信队列。

  4. 压缩并写入 — 交付通过行内压缩将记录转换为经过优化的Apache Parquet文件,并将其写入目标Iceberg表。

  5. 提交 — 交付将新文件提交到 Iceberg 表,这样数据就可以查询了。

记录转换

流式表传输需要在架构注册表中注册 Amazon Glue 架构。交付使用该架构将传入记录转换为 Apache Iceberg 表架构。它支持以下输入记录格式:

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

  • GSR_JSON — 架构注册表序列化器在每条记录中嵌入架 Amazon Glue 构 ID 的 JSON 记录。该架构是从架 Amazon Glue 构注册表自动解析的。

有关 Amazon Glue 架构注册表到 Iceberg 的完整类型映射和字段处理规则,请参阅。直播桌的冰山行为

目标表

当您创建流式表交付时,Amazon Kinesis Data Streams 会在您指定的 S3 表存储桶中创建目标 Iceberg 表。提供以下各项:

  • 表存储桶 ARN — 创建表的 S3 表存储桶的 ARN。

  • 命名空间 — 表的命名空间。

  • 表名 — 要创建的表的名称。每次交付都会创建自己的表格。您无法向现有餐桌配送。

  • 分区列 — 用于按小时对表进行分区的timestamptz列。有关分区要求,请参见直播桌的冰山行为。

数据新鲜度

数据新鲜度定义了传送记录之前的最大缓冲时间。您可以在 300 到 900 秒(5 到 15 分钟)之间配置此值。默认值为 300 秒。值越低,传送速度越快,而值越高,在目标位置生成的文件越少、越大。

Dead-letter 队列

流式传输表需要死信队列。您可以指定一个 Amazon S3 存储桶来接收有关验证失败的记录的信息。您提供存储桶 ARN、预期的存储桶所有者以及可选的错误输出前缀。死信队列包含记录标识符和错误上下文,而不是完整的记录有效载荷。

加密

流式表传输对 Amazon S3 中静态传输的数据进行加密。默认情况下,数据使用 Amazon S3 托管密钥 (SSE-S3) 进行加密。您可以改用客户管理的 Amazon KMS 密钥 (SSE-KMS)。

重要

您不能使用 Amazon 托管式密钥 (aws/kinesis别名)进行目标加密。您必须使用客户管理的 Amazon KMS 密钥。此外,如果您的源 Kinesis 数据流使用加密 Amazon 托管式密钥,则无法创建交付。有关源流加密要求,请参阅源流加密。有关服务执行角色所需的 Amazon KMS 权限,请参阅用于数据传输的 IAM 权限。

Cross-account 和跨区域交付

流媒体表传输不支持跨账户或跨区域传输。源流、目标 S3 表存储桶和 Amazon Glue 架构注册表都必须位于相同 Amazon Web Services 账户 且相同的区域。