本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
直播表交付的工作原理
使用本主题了解流式表传输如何将记录从您的 Amazon Kinesis Data Streams 流发送到由 S3 表存储桶支持的 Apache Iceberg 上的流式表,包括记录转换、目标表创建、分区、数据更新、死信队列和加密。
配送的工作原理
流式传输表按以下步骤将记录发送到 Apache Iceberg 上的流式传输表:
-
读取 — 交付从 Kinesis 数据流中的所有分片中读取记录。
-
缓冲区 — 交付缓冲区会记录直到达到数据新鲜度间隔。
-
验证和转换 — 交付会根据架构注册表中的架构验证每条记录,并将其转换为 Apache Iceberg 表 AWS Glue 架构。验证失败的记录进入死信队列。
-
压缩并写入 — 交付通过行内压缩将记录转换为经过优化的Apache Parquet文件,并将其写入目标Iceberg表。
-
提交 — 交付将新文件提交到 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 账户 且相同的区域。