I Z*_*I Z 4 batch-processing boto amazon-dynamodb
我正在将大量数据索引到 DynamoDB 中,并尝试批量写入以增加实际吞吐量(即加快索引速度)。这是一段代码(这是原始来源):
def do_batch_write(items,conn,table):
batch_list = conn.new_batch_write_list()
batch_list.add_batch(table, puts=items)
while True:
response = conn.batch_write_item(batch_list)
unprocessed = response.get('UnprocessedItems', None)
if not unprocessed:
break
# identify unprocessed items and retry batch writing
Run Code Online (Sandbox Code Playgroud)
我正在使用 boto 版本 2.8.0。如果items元素超过 25 个,则会出现异常。有没有办法增加这个限制?此外,我注意到有时,即使items较短,也无法一次尝试处理所有这些。但是这种情况发生的频率或尝试后有多少元素未处理,与 的原始长度之间似乎没有相关性items。有没有办法避免这种情况并一次性写出所有内容?现在,最终目标是加快处理速度,而不仅仅是避免重复,因此在连续尝试之间长时间休眠不是一种选择。
谢谢
从文档:
“BatchWriteItem 操作在一个或多个表中放置或删除多个项目。对 BatchWriteItem 的一次调用最多可以写入 16 MB 的数据,其中可以包含多达 25 个放置或删除请求。要写入的单个项目可以大为 400 KB。”
某些未成功的原因可能是由于超出了表的预配置吞吐量。您是否同时对表执行了其他写入操作?您是否尝试过增加表上的写入吞吐量以查看是否处理了更多项目。
我不知道有什么方法可以增加每个请求 25 个项目的限制,但您可以尝试在 AWS 论坛上或通过您的支持渠道提问。
我认为获得最大吞吐量的最佳方法是尽可能地增加写入容量单位,并跨多个线程或进程并行化批量写入操作。
| 归档时间: |
|
| 查看次数: |
10298 次 |
| 最近记录: |