首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS Scan忽略withLimit()

AWS Scan忽略withLimit()
EN

Stack Overflow用户
提问于 2020-06-04 11:13:15
回答 1查看 58关注 0票数 0

我正在尝试从DynamoDB表中获取这些项,以便将它们放入csv文件中。代码如下:

代码语言:javascript
复制
ArrayList<String> ids = new ArrayList<String>();
        ScanResult result = null;
        do{
            ScanRequest req = new ScanRequest();
            req.setTableName("table");
            req.withLimit(10);
            if(result != null){
                req.setExclusiveStartKey(result.getLastEvaluatedKey());
            }

              AmazonDynamoDBClient client = new AmazonDynamoDBClient(awsCreds);

            result = client.scan(req);

            List<Map<String, AttributeValue>> rows = result.getItems();

            for(Map<String, AttributeValue> map : rows){
                try{
                    AttributeValue v = map.get("prod_number");
                    String id = v.getS();
                    ids.add(id);
                } catch (NumberFormatException e){
                    System.out.println(e.getMessage());
                }
            }
        } while(result.getLastEvaluatedKey() != null);

        System.out.println("Result size: " + ids.size());

我想知道为什么'req.withLimit(10)‘对结果数量没有影响。查询仍会尝试获取所有记录。

EN

回答 1

Stack Overflow用户

发布于 2020-06-11 21:19:08

ScanRequest meanslimit属性

要评估的最大项目数(不一定是匹配的项目数)。如果在处理结果时DynamoDB处理的项数达到限制,它将停止操作并返回到该点之前的匹配值,以及LastEvaluatedKey中要在后续操作中应用的键,以便您可以从停止的位置继续操作。此外,如果在DynamoDB达到此限制之前处理的数据集大小超过1 MB,它将停止操作并返回达到此限制的匹配值,并返回LastEvaluatedKey中要在后续操作中应用的键以继续操作。有关更多信息,请参阅亚马逊DynamoDB开发人员指南中的Working with Queries

因此,它只限制单个请求返回的部分数据的大小,而不是整个扫描操作的大小。我看到你在做多个请求,所以你会得到更多的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62186247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档