是否有办法查询dynamodb表的global secondary index
,一次获取1000
条记录,并在下一个查询中返回下一组。我有一个java application
查询表并获取与之关联的所有记录,这会导致我的EC2实例上出现堆空间错误。有没有办法像Kinesis checkpointer
那样并行化dynamodb查询操作。以下是我的查询方式。
DynamoDBQueryExpression<RecordsTest> queryExpression = new DynamoDBQueryExpression<RecordsTest>()
.withHashKeyValues(test).withConsistentRead(false);
List<RecordsTest> test = mapper.query(RecordsTest.class, queryExpression); for (RecordsTest tst : test) {
System.out.println(" record not found");}
另外,我尝试使用QuerySpec
选项,但是当我指定要返回的项目限制时,它会从表中返回相同的元素集。我希望返回的项目是那些之前没有返回的项目。
答案 0 :(得分:1)
Query API从您在KeyConditions中提供的分区键开始,对DynamoDB分区执行顺序读取。如果您使用sharding with prefixes on the partition key作为模式的一部分,则可以在分区键的每个分片上并行运行查询API。如果要避免返回相同的结果,则需要使用上一次调用的LastEvaluatedKey在后续的Query调用中设置ExclusiveStartKey。