

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

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

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

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

 流式表将 JSON 架构类型从架 AWS Glue 构注册表映射到 Apache Iceberg 类型，如下所示：


**架构注册表到 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 十进制，精度源自 multipleOF。 | 
| 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`转换）。在 AWS Glue 架构注册表架构中，这是一个`date-time`格式为、映射到 Iceberg `timestamptz` 类型的`string`字段。

 无论分区引用的源列是否出现在架构的数组中，都会自动将其标记为必填`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>

 流媒体表支持复杂类型（结构、地图和列表）的最大嵌套深度为 16 级。超过 16 个嵌套级别的架构在交付创建时会被拒绝。

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

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

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

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

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

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

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

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

 直播表对 Iceberg 表格使用以下格式规范：
+ **冰山格式版本 ** — v2
+ **冰山规格版本 ** — 1.9.0
+ **文件格式 ** — Apache Parquet