

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

# 处理大型记录
<a name="large-records"></a>

Amazon Kinesis Data Streams 支持最大 10 兆MiBs字节 () 的记录。建议使用此功能来处理超过 1 MiB 默认记录大小限制的间歇性数据有效载荷。现有和新建流的默认最大记录大小设置为 1 MiB。

该功能有利于物联网（IoT）应用程序、更改数据捕获（CDC）管道以及偶尔需要处理较大数据有效载荷的机器学习工作流程。要开始在流中使用大型记录，请更新流的最大记录大小限制。

**重要**  
写入的单个分片吞吐量限制 MB/s 为 1，读取 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 数据流的最大记录大小。在添加该限制之前，请验证所有下游应用程序是否能处理较大的记录。

您也可以使用 AWS CLI 更新此设置：

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

## 使用大型记录优化流性能
<a name="optimizing-performance"></a>

建议将大型记录保持在总流量的 2% 以下。流中每个分片的吞吐能力为每秒 1 MiB。为了容纳大型记录，Kinesis 数据流最多可爆发 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 服务 API 参考](https://docs.aws.amazon.com/kinesis/latest/APIReference/Welcome.html)。

## AWS 与大型唱片兼容的组件
<a name="record-compatability"></a>

以下 AWS 组件与大型唱片兼容：


| 组件 | 说明 | 
| --- | --- | 
|  AWS SDK | AWS SDK 支持处理大型记录。您可以使用中的可用方法更新直播的最大记录大小（最多 10 MiB）。 AWS SDKs有关更多信息，请参阅将[此服务与 AWS SDK 配合使用](https://docs.aws.amazon.com/streams/latest/dev/sdk-general-information-section.html)。 | 
|  Kinesis Consuer Library（KCL） | KCL 从 2.x 版开始支持处理大型记录。要使用大型录制支持，请更新流的 `maxRecordSize` 并使用 KCL。有关更多信息，请参阅[使用 Kinesis Client Library](https://docs.aws.amazon.com/streams/latest/dev/kcl.html) 。 | 
|  Kinesis Producer Library（KPL） | KPL 从 1.0.5 版开始支持处理大型记录。要使用大型录制支持，请更新流的 maxRecordSize 并使用 KPL。有关更多信息，请参阅[使用 Amazon Kinesis Producer Library（KPL）开发产生器](https://docs.aws.amazon.com/streams/latest/dev/developing-producers-with-kpl.html)。 | 
|  Amazon EMR | 带有 Apache Spark 的 Amazon EMR 支持处理不超过 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_cn/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 MiB 的记录。 MiBs对于大于 1 MiB 的记录，请勿使用接收器连接器。有关更多信息，请参阅[使用 API 使用连接器在适用于 Apache Flink 的亚马逊托管服务中 DataStream移动数据](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 | 中东（巴林） | 
|  ap-south-1 | 亚太地区（孟买） | 
|  eu-west-3 | 欧洲地区（巴黎） | 
|  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 （美国西部） | 