【问题标题】:Data transfer from DynamoDB table to another DynamoDB table从 DynamoDB 表到另一个 DynamoDB 表的数据传输
【发布时间】:2021-01-10 22:27:04
【问题描述】:

我在 DynamoDB 中有一个大小为 15 GB 的表。现在我需要将一些基于时间戳(在 db 中)的数据传输到另一个 DynamoDB。这里最有效的选择是什么?

a)转移到S3,用pandas或其他方式处理并放入另一个表(数据很大。我觉得这可能需要很长时间)

b) 通过 DataPipeLine(读了很多,但不认为我们可以把查询放在那里)

c) 通过 EMR 和 Hive(这似乎是最好的选择,但是否可以通过 python 脚本完成所有操作?我需要创建一个 EMR 集群并使用它还是每次都创建和终止?EMR 怎么做?也可以高效且廉价地使用?)

【问题讨论】:

  • 15 GB 在 DynamoDB 世界中似乎并不多。如果这是一次性操作并且对时间不敏感,那么您可以简单地进行全表扫描并在几个小时内以编程方式进行传输。您可以暂时增加吞吐量以加速该过程。在任何情况下,数据管道也将受到您的读取吞吐量的限制,因此不会更快。如果您经常这样做,数据管道会更有用
  • @TofigHasanov 这将是按需运行的......所以一个可能每天或每月运行的脚本......
  • @TofigHasanov 全表扫描意味着移动 15 GB 数据,而我可能只需要几 mbs 或 GBs
  • 除非你的时间戳被索引并且有办法查询你需要的记录,否则你仍然需要进行全表扫描才能得到你想要的记录
  • 即使时间戳是排序键,您仍然可能有不同的主键。您可能知道,您不能仅通过排序键查询:您需要指定唯一的主键,因此除非您的所有记录都具有相同的哈希键,否则您将无法避免全扫描

标签: python hive amazon-emr amazon-data-pipeline


【解决方案1】:

我建议将数据管道引入 S3 方法。然后有一个脚本从 S3 读取并处理您的记录。您可以安排它定期运行以备份所有数据。我认为任何进行全面扫描的解决方案都不会为您提供更快的方法,因为它总是受到读取吞吐量的限制。

另一种可能的方法是使用 dynamoDB 流和 lambdas 来实时维护第二个表。您仍然需要先使用上述方法处理现有的 15 GB,然后切换到 lambdas 以保持它们同步

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多