

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

# 直播桌的冰山行为
<a name="data-delivery-st-iceberg"></a>

 使用本主题了解流表如何将 Amazon Glue 架构注册表架构中的数据映射到 Apache Iceberg 表，包括类型映射、字段处理、表维护和格式规范。

## Amazon Glue 架构注册表到 Iceberg 类型的映射
<a name="data-delivery-iceberg-type-mapping"></a>

 流式传输表将 JSON 架构类型从 Amazon Glue 架构注册表映射到 Apache Iceberg 类型，如下表所示。


| JSON 架构类型 | Iceberg 类型 | 注意 | 
| --- | --- | --- | 
| string（纯色） | string | 默认字符串映射。 | 
| string带格式 date-time | timestamptz | 带时区的时间戳。 | 
| string带格式 date | date | 日历日期。 | 
| string带格式 time | time | 一天中的时间。 | 
| string带格式 uuid | uuid | 通用唯一标识符。 | 
| string使用编码byte或 base64 | binary | 编码为 base64 的二进制数据。 | 
| integer（32 位或更低） | int | 最大值或不包含最大值 <= 2^31 的值。 | 
| integer（大于 32 位） | long | 超过 32 位范围的值。 | 
| number 与 multipleOf | decimal | Fixed-point 十进制，精度源自 multipeOf。 | 
| number（纯色） | double | IEEE 754 双精度浮点数。 | 
| boolean | boolean | 对还是错。 | 
| object带有命名属性 | struct | 命名字段映射到结构字段。 | 
| object 与 additionalProperties | map | Key-value 使用字符串键进行映射。 | 
| array | list | 元素的有序集合。 | 
| enum | string | 存储为字符串的枚举值。 | 

## 必填列
<a name="data-delivery-iceberg-required-columns"></a>

 JSON 架构`required`数组中列出的字段变为 Iceberg 表中的必填列（不可为空）。如果记录中缺少必填字段，则该记录将被发送到死信队列。

## 分区键列
<a name="data-delivery-iceberg-partition-key"></a>

 您的表必须包含一`timestamptz`列，该列可用于按小时进行基于时间的分区（`TIME_HOUR`转换）。在 Amazon Glue Schema Registry 架构中，这是一个`date-time`格式为的`string`字段，它映射到 Iceberg `timestamptz` 类型。

 无论分区引用的源列是否出现在架构的数组中，它都会自动标记为必填`required`列。缺少分区键值的记录将发送到死信队列。

 您可以根据表的分区列启用 Amazon S3 表记录过期任务。有关更多信息，请参阅 [记录到期](#data-delivery-iceberg-record-expiration)。

## 现场处理
<a name="data-delivery-iceberg-field-handling"></a>

 流式传输表处理传入记录与 Iceberg 表架构之间的不匹配情况，如下所示：
+ **额外字段** — 记录中存在但未在架构中定义的字段将被删除且不会写入 Iceberg 表。
+ **缺少可选字段**-记录中不存在的可选字段按照 Iceberg 表`null`中的方式写入。
+ **缺少必填字段**-如果记录中缺少必填字段，则整个记录将发送到死信队列。

## 嵌套限制
<a name="data-delivery-iceberg-nesting"></a>

 Streaming table 支持复杂类型（结构、映射和列表）的最大嵌套深度为 16 级。超过 16 个嵌套级别的架构将在交付创建时被拒绝。

## 托管表属性
<a name="data-delivery-iceberg-table-properties"></a>

 流媒体表会自动管理 Iceberg 表的属性。这些属性是在创建表时设置的，不应在外部进行修改。Streaming table 使用这些属性来控制写入行为、压缩和元数据管理。

 由于该表由 Amazon Kinesis Data Streams 管理，因此您不应更新其架构、修改其表属性或直接写入或删除其数据。您可以使用 Amazon 分析服务和任何兼容的 Apache Iceberg 查询引擎来查询该表。有关托管表存储桶的更多信息，请参阅 *Amazon S3 用户*指南中的[使用 Amazon 托管表存储桶](https://docs.amazonaws.cn/AmazonS3/latest/userguide/s3-tables-aws-managed-buckets.html)。

## S3 表类数据存储服务维护
<a name="data-delivery-iceberg-maintenance"></a>

 向由 S3 表支持的 Apache Iceberg 上的流式传输表时，将自动处理以下维护操作：
+ **压缩** — 定期将小型数据文件压缩成较大的文件，以提高查询性能并减少元数据开销。
+ **快照过期** — 清理过期的快照以回收元数据存储空间并减小表元数据大小。
+ **未引用的文件清理**-删除任何快照都不再引用的孤立数据文件以回收存储空间。

## 记录到期
<a name="data-delivery-iceberg-record-expiration"></a>

 您可以为 Iceberg 表配置记录到期时间。启用后，Amazon S3 表会在维护操作期间根据表的`timestamptz`分区列自动删除早于指定保留期的记录。有关更多信息，请参阅 [Amazon S3 *用户指南中的管理 Amazon S3* 表记录到期时间](https://docs.amazonaws.cn/AmazonS3/latest/userguide/s3-tables-record-expiration.html)。

## 格式规范
<a name="data-delivery-iceberg-format"></a>

 直播表对 Iceberg 表使用以下格式规范：
+ **Iceberg 格式版本 — v** 2
+ **冰山规格版本 — 1.9.** 0
+ **文件格式** — Apache 实木复合地板