gpt4 book ai didi

python-3.x - 使用 boto3 将大量数据加载到 Dynamodb 非常慢

转载 作者:行者123 更新时间:2023-12-04 01:44:45 25 4
gpt4 key购买 nike

我正在尝试使用 EMR 5 节点集群中的以下代码将超过 2000 万条记录加载到我的 Dynamodb 表中。但是完全加载需要更多的时间。我有更多巨大的数据要加载,但我想在几分钟内加载它。如何实现这一目标?

下面是我的代码。我刚刚更改了原始列名,我有 20 列要插入。这里的问题是加载缓慢。

import boto3
import json
import decimal

dynamodb = boto3.resource('dynamodb','us-west')
table = dynamodb.Table('EMP')

s3 = boto3.client('s3')
obj = s3.get_object(Bucket='mybucket', Key='emp-rec.json')
records = json.loads(obj['Body'].read().decode('utf-8'), parse_float = decimal.Decimal)

with table.batch_writer() as batch:
for rec in rows:
batch.put_item(Item=rec)

最佳答案

首先,您应该使用 Amazon CloudWatch 检查您是否达到了表上配置的写入容量单位的限制。如果是这样,您可以增加容量,至少在负载期间是这样。

二、代码创建一批一条记录 ,这不会很有效。 batch_writer()可用于处理多条记录,例如来自 batch_writer() documentation 的示例代码:

with table.batch_writer() as batch:
for _ in xrange(1000000):
batch.put_item(Item={'HashKey': '...',
'Otherstuff': '...'})

注意 for循环在 batch_writer() 内?这样,多个记录存储在一个批次中。但是,您的代码示例具有 forbatch_writer() ,这导致批量大小为 1。

关于python-3.x - 使用 boto3 将大量数据加载到 Dynamodb 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55762451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com