DynamoDB:ProvisionedThroughputExceededException何时引发

时间:2017-07-19 14:14:08

标签: amazon-web-services apache-spark amazon-s3 amazon-dynamodb

我在Apache Spark作业中使用AWS Java SDK,用从S3中提取的数据填充DynamoDB表。 Spark作业只使用具有非常强流量的单PutItem来写数据(三个m3.xlarge节点仅用于写入)并且没有任何重试策略。

AWS SDK具有退避策略的DynamoDB文档state,但最终如果速率过高ProvisionedThroughputExceededException则可以引发。我的火花工作工作了三天,仅受DynamoDB输入约束(等于500个单位),因此我预计速率极高且队列非常长,但我没有任何抛出异常或丢失数据的迹象。

所以,我的问题是 - 当以非常高的速率写入DynamoDB时可能会出现异常。

1 个答案:

答案 0 :(得分:3)

如果您有热分区,也可以获得吞吐量异常。由于吞吐量在分区之间划分,因此每个分区的下限都低于总预配置吞吐量,因此,如果经常写入同一分区,即使未使用完全预配置吞吐量,也可以达到限制。

另一件需要考虑的事情是DynamoDB会累积未使用的吞吐量,如果超过限制,可以短时间使用它来突发可用的吞吐量。

编辑:DynamoDB现在具有新的自适应容量功能,通过不平等地重新分配总吞吐量,在某种程度上解决了热分区的问题。