

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 串流資料表的 Iceberg 行為
<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 | 最大值或 exclusiveMaximum <= 2^31 的值。 | 
| integer （大於 32 位元） | long | 超過 32 位元範圍的值。 | 
| number 取代為 multipleOf | decimal | 固定點小數，精確度衍生自 multipleOf。 | 
| number （純） | double | IEEE 754 雙精度浮點。 | 
| boolean | boolean | 是或否。 | 
| object 使用具名屬性 | struct | 具名欄位對應至結構欄位。 | 
| object 取代為 additionalProperties | map | 具有字串索引鍵的索引鍵值映射。 | 
| 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`格式為 `string`的欄位，對應至 Iceberg `timestamptz`類型。

 分割區參考的來源資料欄會自動標記為必要，無論它是否出現在結構描述的`required`陣列中。缺少分割區索引鍵值的記錄會傳送至無效字母佇列。

 您可以根據資料表的分割區資料欄啟用 Amazon S3 Tables 記錄過期任務。如需詳細資訊，請參閱[記錄過期](#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 使用者指南*》中的[使用 AWS 受管資料表儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-aws-managed-buckets.html)體。

## S3 Tables 維護
<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 使用者指南》中的管理 Amazon S3 Tables 記錄過期](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-record-expiration.html)。 *Amazon S3 * 

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

 串流資料表使用 Iceberg 資料表的下列格式規格：
+ **Iceberg 格式版本** – v2
+ **Iceberg 規格版本** – 1.9.0
+ **檔案格式** – Apache Parquet