2

我需要使用亚马逊数据管道将我的 dynamoDB 表数据备份到 S3。

我的问题是-我可以使用单个数据管道将多个 dynamoDB 表备份到 S3,还是必须为每个表创建一个单独的管道?

另外,由于我的表有一个 year_month 前缀(ex- 2014_3_tableName),我正在考虑使用 datapipeline SDK 在月份更改时更改管道定义中的表名。这行得通吗?有替代/更好的方法吗?

谢谢!!

4

2 回答 2

8

如果您通过 DynamoDB 控制台的导入/导出按钮设置数据管道,则必须为每个表创建单独的管道。如果您直接使用 Data Pipeline(通过 Data Pipeline API 或通过 Data Pipeline 控制台),则可以在同一管道中导出多个表。对于每个表,只需添加一个额外的 DynamoDBDataNode 和一个 EmrActivity 以将该数据节点链接到输出 S3DataNode。

关于您的 year_month 前缀用例,使用数据管道 sdk 定期更改表名似乎是最好的方法。另一种方法可能是复制导出 EmrActivity 正在运行的脚本(您可以在活动的“步骤”下看到脚本位置),而不是通过检查当前来更改 hive 脚本确定表名称的方式日期。您需要复制此脚本并将修改后的脚本托管在您自己的 S3 存储桶中,并将 EmrActivity 指向该位置而不是默认位置。我以前没有尝试过任何一种方法,但理论上两者都是可行的。

有关导出 DynamoDB 表的更多一般信息可以在DynamoDB 开发人员指南中找到,更多详细信息可以在AWS Data Pipeline 开发人员指南中找到。

于 2014-05-07T17:07:57.667 回答
2

这是一个老问题,但我在最后几天一直在寻找答案。添加多个 DynamoDBDataNode 时,您仍然可以使用单个 S3DataNode 输出。只需通过在 EmrActivity Step 字段中指定不同的 output.directoryPath 来区分 S3 存储桶中的文件夹。

像这样: #{output.directoryPath}/newFolder

每个新文件夹都会在 s3 存储桶中自动创建。

于 2016-09-21T19:27:45.777 回答