View a markdown version of this page

直播表交付的工作原理 - Amazon Kinesis Data Streams

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

直播表交付的工作原理

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

配送的工作原理

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

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

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

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

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

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

记录转换

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

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

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

有关 AWS 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) 进行加密。您可以改用客户管理的 AWS KMS 密钥 (SSE-KMS)。

重要

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

Cross-account 和跨区域交付

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