DynamoDB扫描返回不完整的数据
问题描述:
我想对dynamoDB表进行全面扫描。这是我正在使用的代码:DynamoDB扫描返回不完整的数据
private void fetchItems(AmazonDynamoDBClient client) {
int count = 0;
ScanResult result = null;
ScanRequest req = new ScanRequest();
req.setTableName(this.tableName);
do {
if (result != null) {
req.setExclusiveStartKey(result.getLastEvaluatedKey());
}
result = client.scan(req);
List<Map<String, AttributeValue>> rows = result.getItems();
count += rows.size();
} while(result.getLastEvaluatedKey() != null);
System.out.println("Result size: " + count);
}
}
问题是此函数返回表中的273项的207。我检查了指标,并没有限制请求。什么可能是这个不完整结果的原因?
如果在循环中总结result.getItems()的大小,它是否会生成相同的数字?他们都有属性“STUDENT_ID”吗?这是提供问题的确切代码,还是问题的简化版本? (如果它是一个简化版本,你可能已经删除了这个bug)。作为一个说明,节流会抛出一个异常,不会给失踪的结果。 – Krease
此外,您的客户是否设置为使用您期望的凭证和区域?您可能在不同地区或账户的表格中得到不同的结果,而不是您正在验证的结果(即:beta vs prod账户,或us-east-1 vs us-west-1)。 – Krease
@Chris我编辑了代码以显示出现问题的确切代码。至于凭证的事情,我会在这方面回复你。 – rohan013