【问题标题】:How can I copy one DynamoDB table to another one, while changing the primary key in the process?如何将一个 DynamoDB 表复制到另一个表,同时在此过程中更改主键?
【发布时间】:2019-10-29 11:21:53
【问题描述】:

我在这里找到了一些关于将一个 dynamoDB 表复制到另一个表的参考资料,但是我很难找到任何涉及在这样做时更改主键的内容。

基本上我有一个看起来像这样的架构(具有截然不同的字段/数据,但想法是相同的):

PK  Author Text           LastInitial
-------------------------------------
1   Bob    [lots of text] R
2   Jim    [lots of text] H
3   Sarah  [lots of text] J
...

大约有 280+ 百万行,大小为 62 GB

我需要将它复制到一个如下所示的新表中:

PK  Author Text           
--------------------------
1R   Bob    [lots of text]
2H   Jim    [lots of text]
3J   Sarah  [lots of text]
...

所以你看,当我在传输数据时,我也在构建一个新的主键 (PK + LastInitial)。

我确信我可以使用 AWS 的 Data Pipeline 工具轻松完成此操作,但我似乎无法弄清楚如何进行转换。似乎也很遗憾,我不能直接将它从一个发电机表转移到另一个,而且它必须先到 S3。

有没有一种巧妙的方法可以解决这个问题,还是我只需要使用 SDK 编写一个脚本并在 EC2 实例上运行它?

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb amazon-data-pipeline


    【解决方案1】:

    可能有其他方法可以解决此问题,但您可以尝试使用 Glue ETL 作业将数据从一个表复制到另一个表。这有点hacky,但它很容易完成工作。您可以使用 Glue 爬虫创建第一个表的数据目录。然后您可以使用建议的 Glue ETL 作业代码 here 将数据复制到第二个表。您还应该能够在 ETL 作业中以任何您想要的方式操作数据。

    【讨论】:

    • 感谢您的回复 :) 您认为这会比创建 SDK 脚本在 EC2 实例上运行更快和/或更便宜吗?
    • 这取决于您尝试移动的数据量以及移动速度。如果您有数百万行,EC2 脚本可能不是一个好的选择,它会很慢,并且根据您使用的实例类型,价格可能会有所不同。如果您有数千行或数十万行,则使用 Glue 可能会大材小用。
    • 知道了,是的,我在这里查看 2.8 亿行
    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2018-07-10
    • 2011-06-26
    • 2015-09-22
    相关资源
    最近更新 更多