将较大的CSV文件加载到DynamoDb中的最佳/最佳方法

我的本地机器上有一个巨大的.csv文件。 我想要在DynamoDB(欧洲西部-1,爱尔兰)中加载这些数据。 你会怎么做?

  1. 我的第一个方法是:

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

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

    • 有太多的要求
    • 如果我发送没有CSV头信息的数据,我必须对lambda进行硬编码
    • 如果我使用CSV标头发送数据,则stream量太大
  2. 我也在考虑把这个文件放到一个S3存储桶中,然后用一个lambda ,但是这个文件很大,lambda的内存和时间限制让我感到恐慌。

  3. 我也在考虑在EC2机器上做这个工作,但是我失去了反应(如果我在不使用的时候关掉机器)或者我赔钱(如果我不关机的话)。

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

请告诉我,如果你是我,那么获得DynamoDB中huge CSV文件的最佳方法是什么。 我想尽量减less“秒”上传的工作量。

我更喜欢使用Node.js或R. Python作为最后的解决scheme可能是可以接受的。

如果您想要使用AWS方式,那么数据pipe道可能是最好的方法:

这里有一个教程,比你需要多一点,但应该让你开始:

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

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

如果您的所有数据都在S3中,则可以使用AWS Data pipeline的预定义模板“从S3导入DynamoDB数据”。configuration应该很简单。