У меня есть таблица с 10k строк.
Я пытаюсь проанализировать их, чтобы изменить небольшую вещь внутри атрибута (внутри каждой строки) с помощью Python, поэтому я использую client.scan (), получая пакеты по 10 строк и передавая параметр «LastEvaluatedKey» следующему. сканирование ().
Проблема в том, что после 40 строк функция scan () не возвращает lastKey, как и в БД, длина которой составляет всего 40 строк.
Я заметил, что при запуске того же скрипта для другой таблицы, в 3 раза больше, остановка происходит на 120 строках (в 3 раза больше).
Таблица имеет емкость по требованию.
Есть идеи по этому поводу?
client = boto3.client('dynamodb')
resource = boto3.resource('dynamodb')
table = resource.Table(table_name)
remaining = 3961
iteration = 0
limit = 10
while remaining > 0:
# retrieve Limit
if iteration == 0:
response = client.scan(
TableName=table_name,
Limit=limit,
Select='ALL_ATTRIBUTES',
ReturnConsumedCapacity='TOTAL',
TotalSegments=123,
Segment=122,
)
key = response["LastEvaluatedKey"]
else:
response = client.scan(
TableName=table_name,
Limit=limit,
Select='ALL_ATTRIBUTES',
ExclusiveStartKey=key,
ReturnConsumedCapacity='TOTAL',
TotalSegments=123,
Segment=122,
)
key = response["LastEvaluatedKey"]
iteration += 1
for el in response["Items"]:
print(el)