我需要使用amazon data管道将dynamoDB表数据备份到S3。
我的问题是-我可以使用单个数据管道备份多个dynamoDB表到S3,或者我必须为它们每个单独的管道?
此外,由于我的表有一个year_month前缀(ex- 2014_3_tableName),我正在考虑使用datapipeline SDK在月份变化时更改管道定义中的表名。这能行吗?有没有其他更好的方法?
谢谢! !
如果您通过DynamoDB控制台的导入/导出按钮设置数据管道,则必须为每个表创建单独的管道。如果您直接使用Data Pipeline(通过Data Pipeline API或Data Pipeline控制台),则可以在同一管道中导出多个表。对于每个表,只需添加一个额外的DynamoDBDataNode和一个EmrActivity,将该数据节点链接到输出S3DataNode。
对于您的year_month前缀用例,使用数据管道sdk定期更改表名似乎是最好的方法。另一种方法可能是复制导出EmrActivity正在运行的脚本(您可以在活动的"步骤"下看到脚本位置),而不是改变hive脚本通过检查当前日期来确定表名的方式。您需要复制该脚本,并将修改后的脚本托管在您自己的S3桶中,并将EmrActivity指向该位置,而不是默认位置。这两种方法我以前都没有尝试过,但理论上都是可行的。
关于导出DynamoDB表的更多一般信息可以在DynamoDB开发者指南中找到,更详细的信息可以在AWS数据管道开发者指南中找到。
这是一个老问题,但我在最后几天寻找答案。当添加多个DynamoDBDataNode时,您仍然可以像输出一样使用单个S3DataNode。只需通过指定不同的输出来区分S3桶中的文件夹。
这样的: #{输出。directoryPath}/newFolder
每个新文件夹将自动创建在s3桶