【问题标题】:Dynamodb parallel scan using Table.scan api in Java在 Java 中使用 Table.scan api 进行 Dynamodb 并行扫描
【发布时间】:2016-09-06 10:40:48
【问题描述】:

如果任何熟悉 DynamoDB 工作原理的人提供帮助,我将不胜感激。 我需要对大型 DynamoDB 表执行扫描。我知道 DynamoDBClient 扫描操作仅限于 1 MB 大小的返回数据。相同的限制是否适用于 Table.scan 操作?问题是 Table.scan 操作返回类型为“ItemCollection<ScanOutcome>”的输出,而 DynamoDBClient 扫描返回 ScanResult 输出,我不清楚这些操作是否以类似的方式工作。

我已经检查了这个例子:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ScanJavaDocumentAPI.html,但它不包含任何关于使用最后返回的密钥的提示。

我的问题是: 如果我使用 Table.scan,在 lastreturnedkey 为空之前,是否还需要循环进行扫描调用?如果是,我如何获得最后一个密钥?如果没有,我该如何强制分页? 任何指向代码示例的链接将不胜感激。我花了一些时间在谷歌上搜索示例,但其中大多数使用的是 DynamoDBClient 或 DynamoDBMapper,而我需要使用 Table 和 Index 对象。

谢谢!

【问题讨论】:

  • 你说你有一个非常大的表,但你正在寻找特别的东西(或一组),所以你可以开始过滤你的结果(我猜这很明显)。如果相同还不够大:是的,您必须在下一批中继续搜索。
  • 我不确定我是否理解您的评论。我确实有一个过滤器表达式可以过滤掉我的扫描结果,但这并不能保证我的结果永远不会超过 1Mb
  • 所以,需要扫描下一批;您可以通过“玩”Segments 和/或TotalSegments 来并行进行;在这种情况下,从请求返回的LastEvaluatedKey 的值必须在后续扫描操作中用作具有相同段ID 的ExclusiveStartKey。它很像 SQL,但速度更快!
  • Table.scan 输出类型中没有“LastEvaluatedKey”参数

标签: java amazon-dynamodb aws-sdk full-table-scan


【解决方案1】:

如果您遍历Table.scan() 的输出,SDK 将为您进行分页。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2014-12-27
    • 2012-05-19
    • 1970-01-01
    相关资源
    最近更新 更多