从 Amazon DynamoDB 获取所有行 table
Getting all rows from an Amazon DynamoDB table
我需要从我的 DynamoDB table 中获取所有行。大约有 500k 条记录,每次我从 Java SDK DynamoDBMapper 调用扫描方法时,我都会得到不同数量的行。所以我尝试使用 scanPage 方法并使用 ScanResultPage 对象中的 lastEvaluationKey 进行分页(因为我认为查询结果集大小限制为 1MB)认为它会起作用。但我得到相同的结果。我做了这样的事情:
List<String> ids = new ArrayList<>();
DynamoDBScanExpression dynamoDBScanExpression = new DynamoDBScanExpression();
do {
ScanResultPage<EntityObject> scanResultPage = dynamoDBMapper.scanPage(EntityObject.class,
dynamoDBScanExpression);
scanResultPage.getResults().forEach(result -> ids.add(result.getId()));
log.info("Last evaluated key: {}", scanResultPage.getLastEvaluatedKey());
dynamoDBScanExpression.setExclusiveStartKey(scanResultPage.getLastEvaluatedKey());
} while (dynamoDBScanExpression.getExclusiveStartKey() != null);
我该怎么做才能真正获得所有行?
您使用的是非常旧的 API,这 API 不是最佳做法。亚马逊推荐 AWS SDK for Java V2.
对于您的用例,请查看使用 Java 2.x 的 AWS 开发工具包检索分页结果。本主题讨论当响应对象太大而无法在单个响应中 return 时如何处理 return 分页结果的 AWS 操作。详情在这里:
Retrieving paginated results using the AWS SDK for Java 2.x
这里有一个示例演示了如何使用异步 DynamoDB 客户端进行自动分页
在 Java 1.0 的 AWS 开发工具包中,响应包含一个令牌,您必须使用该令牌来检索下一页结果。 Java 2.x 的 AWS 开发工具包中的新功能是自动分页方法,可以调用多个服务来为您获取下一页结果。
我需要从我的 DynamoDB table 中获取所有行。大约有 500k 条记录,每次我从 Java SDK DynamoDBMapper 调用扫描方法时,我都会得到不同数量的行。所以我尝试使用 scanPage 方法并使用 ScanResultPage 对象中的 lastEvaluationKey 进行分页(因为我认为查询结果集大小限制为 1MB)认为它会起作用。但我得到相同的结果。我做了这样的事情:
List<String> ids = new ArrayList<>();
DynamoDBScanExpression dynamoDBScanExpression = new DynamoDBScanExpression();
do {
ScanResultPage<EntityObject> scanResultPage = dynamoDBMapper.scanPage(EntityObject.class,
dynamoDBScanExpression);
scanResultPage.getResults().forEach(result -> ids.add(result.getId()));
log.info("Last evaluated key: {}", scanResultPage.getLastEvaluatedKey());
dynamoDBScanExpression.setExclusiveStartKey(scanResultPage.getLastEvaluatedKey());
} while (dynamoDBScanExpression.getExclusiveStartKey() != null);
我该怎么做才能真正获得所有行?
您使用的是非常旧的 API,这 API 不是最佳做法。亚马逊推荐 AWS SDK for Java V2.
对于您的用例,请查看使用 Java 2.x 的 AWS 开发工具包检索分页结果。本主题讨论当响应对象太大而无法在单个响应中 return 时如何处理 return 分页结果的 AWS 操作。详情在这里:
Retrieving paginated results using the AWS SDK for Java 2.x
这里有一个示例演示了如何使用异步 DynamoDB 客户端进行自动分页
在 Java 1.0 的 AWS 开发工具包中,响应包含一个令牌,您必须使用该令牌来检索下一页结果。 Java 2.x 的 AWS 开发工具包中的新功能是自动分页方法,可以调用多个服务来为您获取下一页结果。