

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

# 處理大型記錄
<a name="large-records"></a>

Amazon Kinesis Data Streams 支援高達 10 MB (MiBs的記錄。建議將此功能用於處理超過預設 1 MiB 記錄大小限制的間歇性資料承載。現有和新建立串流的預設記錄大小上限設定為 1 MiB。

此功能有利於物聯網 (IoT) 應用程式、變更資料擷取 (CDC) 管道，以及需要偶爾處理較大資料承載的機器學習工作流程。若要開始在串流中使用大型記錄，請更新串流的記錄大小上限。

**重要**  
對於寫入，個別碎片輸送量限制為 1 MB/s，對於讀取，2 MB/s 保持不變，但支援更大的記錄大小。Kinesis Data Streams 旨在適應間歇性大型記錄，以及小於或等於 1 MiB 的記錄基準流量。它的設計無法容納持續大量大型記錄擷取。

## 更新您的串流以使用大型記錄
<a name="update-stream"></a>

**使用 Kinesis Data Streams 處理較大的記錄**

1. 導覽至 Kinesis Data Streams 主控台。

1. 選取您的串流，然後前往**組態**索引標籤。

1. 按一下**編輯**，其位於**記錄大小上限**旁。

1. 設定您的記錄大小上限 （最多 10 MiB)。

1. 儲存您的變更。

此設定只會調整此 Kinesis 資料串流的記錄大小上限。在提高此限制之前，請確認所有下游應用程式都可以處理較大的記錄。

您也可以使用 CLI AWS 更新此設定：

```
aws kinesis update-max-record-size \ --stream-arn  \
        --max-record-size-in-ki-b 5000
```

## 使用大型記錄最佳化串流效能
<a name="optimizing-performance"></a>

建議將大型記錄維持在整體流量的 2% 以下。在串流中，每個碎片的輸送量容量為每秒 1 MiB。為了容納大型記錄，Kinesis Data 串流爆量高達 10 MiBs同時平均每秒 1 MiB。支援大型記錄的此容量會持續重新填入串流。重新填入速率取決於大型記錄的大小和基準記錄的大小。為了獲得最佳結果，請使用統一分佈的分割區索引鍵。如需 Kinesis 隨需擴展方式的詳細資訊，請參閱[隨需模式功能和使用案例](how-do-i-size-a-stream.html#ondemandmode)。

## 使用大型記錄緩解限流
<a name="mitigate-throttling"></a>

**緩解限流**

1. 在生產者應用程式中實作具有指數退避的重試邏輯。

1. 使用隨機分割區索引鍵，將大型記錄分散到可用的碎片。

1. 將承載存放在 Amazon S3 中，並僅傳送中繼資料參考至串流，以取得大型記錄的連續串流。如需詳細資訊，請參閱[使用 Amazon Kinesis Data Streams 處理大型記錄](https://aws.amazon.com/blogs/big-data/processing-large-records-with-amazon-kinesis-data-streams/)。

## 使用 Kinesis Data Streams APIs 處理大型記錄
<a name="records-apis"></a>

大型記錄支援引進一個新的 API，並更新兩個現有的控制平面 APIs，以處理高達 10 MiBs 的記錄。

用於修改記錄大小的 API：
+ `UpdateMaxRecordSize`：設定現有串流的記錄大小上限，上限為 10 MiBs。

現有 APIs更新：
+ `CreateStream`：新增選擇性`MaxRecordSizeInKiB`參數，以在建立串流期間設定記錄大小限制。
+ `DescribeStreamSummary`：傳回 `MaxRecordSizeInKiB` 欄位以顯示目前的串流組態。

列出的所有 APIs 都會維持現有串流的回溯相容性。如需完整的 API 文件，請參閱 [Amazon Kinesis Data Streams Service API 參考](https://docs.aws.amazon.com/kinesis/latest/APIReference/Welcome.html)。

## AWS 元件與大型記錄相容
<a name="record-compatability"></a>

下列 AWS 元件與大型記錄相容：


| 元件 | Description | 
| --- | --- | 
|  AWS 開發套件 | AWS SDK 支援處理大型記錄。您可以使用 AWS SDKs 中的可用方法來更新串流的最大記錄大小，最高可達 10 MiB。如需詳細資訊，請參閱[搭配 AWS SDK 使用此服務](https://docs.aws.amazon.com/streams/latest/dev/sdk-general-information-section.html)。 | 
|  Kinesis 消費者程式庫 (KCL) | 從 2.x 版開始，KCL 支援處理大型記錄。若要使用大型記錄支援，請更新串流`maxRecordSize`的 ，並使用 KCL。如需詳細資訊，請參閱[使用 Kinesis Client Library](https://docs.aws.amazon.com/streams/latest/dev/kcl.html)。 | 
|  Kinesis Producer Library (KPL) | 從 1.0.5 版開始，KPL 支援處理大型記錄。若要使用大型記錄支援，請更新串流maxRecordSize的 ，並使用 KPL。如需詳細資訊，請參閱[使用 Amazon Kinesis Producer Library (KPL) 開發生產者](https://docs.aws.amazon.com/streams/latest/dev/developing-producers-with-kpl.html)。 | 
|  Amazon EMR | Amazon EMR with Apache Spark 支援處理高達 Kinesis Data Streams 限制 (10 MiBs 的大型記錄。若要使用大型記錄支援，請使用 `readStream`函數。如需詳細資訊，請參閱 [Amazon EMR 和 Amazon Kinesis 整合](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-kinesis.html)。 | 
|  Amazon Data Firehose | 與 Kinesis Data Streams 搭配使用時，具有大型記錄的 Amazon Data Firehose 行為取決於交付目的地： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/streams/latest/dev/large-records.html) 對於需要以大型記錄交付至 Snowflake 或 Redshift 的應用程式，請先將資料交付至 Amazon S3。之後，使用擷取、轉換、載入 (ETL) 程序載入資料。對於所有其他目的地，請在proof-of-concept環境中使用大型記錄測試行為，然後再擴展到生產用量。處理大型記錄會因目的地而異。  | 
|  AWS Lambda | AWS Lambda 支援最多 6 MiBs承載。此限制包括轉換為 base-64 編碼的 Kinesis 承載，以及與事件來源映射 (ESM) 相關聯的中繼資料。對於小於 6 MiBs的記錄，Lambda 會使用 ESM 來處理它們，而不需要額外的組態。對於大於 6 MiBs的記錄，Lambda 會使用失敗時的目的地來處理它們。您必須使用 ESM 設定失敗時目的地，以處理超過 Lambda 處理限制的記錄。傳送至失敗時目的地的每個事件都是 JSON 文件，其中包含有關失敗呼叫的中繼資料。 無論記錄大小為何，建議在 ESM 中建立失敗時目的地。這可確保不會捨棄任何記錄。如需詳細資訊，請參閱[設定失敗呼叫的目的地](https://docs.aws.amazon.com/lambda/latest/dg/kinesis-on-failure-destination.html#kinesis-on-failure-destination-console)。 | 
|  Amazon Redshift | 從 Kinesis Data Streams 串流資料時，Amazon Redshift 僅支援小於 1 MiB 的記錄大小。超過此限制的記錄不會處理。未處理的記錄會記錄為 `sys_stream_scan_errors`。如需詳細資訊，請參閱 [SYS\$1STREAM\$1SCAN\$1ERRORS](https://docs.aws.amazon.com/redshift/latest/dg/r_SYS_STREAM_SCAN_ERRORS.html)。 | 
|  Kinesis Data Streams 的 Flink 連接器 | 使用來自 Kinesis Data Streams 的資料有兩種方法：Kinesis 來源連接器和 Kinesis 接收器連接器。來源連接器支援處理小於 1 MiB 的記錄，最多 10 MiBs 請勿將接收器連接器用於大於 1 MiB 的記錄。如需詳細資訊，請參閱[使用連接器透過 DataStream API 在 Amazon Managed Service for Apache Flink 中移動資料](https://docs.aws.amazon.com/managed-flink/latest/java/how-connectors.html)。 | 

## 支援大型記錄的區域
<a name="supported-regions"></a>

此 Amazon Kinesis Data Streams 功能僅適用於下列 AWS 區域：


| AWS 區域 | 區域名稱 | 
| --- | --- | 
|  eu-north-1 | 歐洲 (斯德哥爾摩) | 
|  me-south-1 | Middle East (Bahrain) | 
|  ap-south-1 | 亞太地區 (孟買) | 
|  eu-west-3 | Europe (Paris) | 
|  ap-southeast-3 | 亞太地區 (雅加達) | 
|  us-east-2 | 美國東部 (俄亥俄) | 
|  af-south-1 | 非洲 (開普敦) | 
|  eu-west-1 | 歐洲 (愛爾蘭) | 
|  me-central-1 | 中東 (阿拉伯聯合大公國) | 
|  eu-central-1 | 歐洲 (法蘭克福) | 
|  sa-east-1 | 南美洲 (聖保羅) | 
|  ap-east-1 | 亞太地區 (香港) | 
|  ap-south-2 | 亞太地區 (海德拉巴) | 
|  us-east-1 | 美國東部 (維吉尼亞北部) | 
|  ap-northeast-2 | 亞太地區 (首爾) | 
|  ap-northeast-3 | 亞太地區 (大阪) | 
|  eu-west-2 | 歐洲 (倫敦) | 
|  ap-southeast-4 | 亞太地區 (墨爾本) | 
|  ap-northeast-1 | 亞太地區 (東京) | 
|  us-west-2 | 美國西部 (奧勒岡) | 
|  us-west-1 | 美國西部 (加利佛尼亞北部) | 
|  ap-southeast-1 | 亞太地區 (新加坡) | 
|  ap-southeast-2 | 亞太地區 (悉尼) | 
|  il-central-1 | 以色列 (特拉維夫) | 
|  ca-central-1 | 加拿大 (中部) | 
|  ca-west-1 | 加拿大西部 (卡加利) | 
|  eu-south-2 | 歐洲 (西班牙) | 
|  cn-northwest-1 | 中國 (寧夏) | 
|  eu-central-2 | 歐洲 (蘇黎世) | 
| us-gov-east-1 | AWS GovCloud （美國東部） | 
| us-gov-west-1 | AWS GovCloud （美國西部） | 