将巨大的CSV文件加载到DynamoDb的更好/最佳方法

时间:2017-03-27 15:51:25

标签: node.js csv amazon-web-services amazon-s3 lambda

我的本​​地计算机上有一个巨大的.csv 文件。我想在DynamoDB(eu-west-1,Ireland)中加载该数据。你会怎么做?

  1. 我的第一个方法是:

    • 在本地迭代CSV文件
    • 通过curl -X POST -d '<row>' .../connector/mydata
    • 向AWS发送一行
    • 处理lambda中的上一个调用并写入DynamoDB

    我不喜欢这个解决方案,因为:

    • 请求太多
    • 如果我发送没有CSV标题信息的数据,我必须硬编码lambda
    • 如果我使用CSV标头发送数据,则流量过多
  2. 我还在考虑将文件放在S3存储桶中并使用lambda进行处理,但文件很大,而且lambda的内存和时间限制让我害怕

  3. 我也在考虑在EC2机器上完成这项工作,但是我失去了反应能力(如果我在没有使用的情况下关闭机器)或者我赔钱(如果我不关闭机器)。

  4. 我被告知Kinesis可能是一个解决方案,但我不相信。

  5. 如果您是我,请告诉我在DynamoDB中获取huge CSV文件的最佳方法。我希望最大程度地减少第二个&#34;#34的工作量;上传。

    我更喜欢使用Node.js或R. Python可能是最后的解决方案。

2 个答案:

答案 0 :(得分:3)

如果您想以AWS的方式进行,那么数据管道可能是最好的方法:

这是一个比你需要的更多的教程,但应该让你开始:

  

本教程的第一部分介绍了如何定义AWS数据   管道管道,用于从Amazon中以制表符分隔的文件中检索数据   S3填充DynamoDB表,使用Hive脚本定义   必要的数据转换步骤,并自动创建一个   Amazon EMR集群执行工作。

http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-importexport-ddb-part1.html

答案 1 :(得分:1)

如果您的所有数据都在S3中,您可以使用AWS Data管道的预定义模板从S3&#39;导入DynamoDB数据。它应该很容易配置。

相关问题