将较大的CSV文件加载到DynamoDb中的最佳/最佳方法
我的本地机器上有一个巨大的.csv
文件。 我想要在DynamoDB(欧洲西部-1,爱尔兰)中加载这些数据。 你会怎么做?
-
我的第一个方法是:
- 在本地迭代CSV文件
- 通过
curl -X POST -d '<row>' .../connector/mydata
向AWS发送一行 - 在lambda中处理以前的调用,并在DynamoDB中写入
我不喜欢这个解决scheme,因为:
- 有太多的要求
- 如果我发送没有CSV头信息的数据,我必须对lambda进行硬编码
- 如果我使用CSV标头发送数据,则stream量太大
-
我也在考虑把这个文件放到一个
S3
存储桶中,然后用一个lambda
,但是这个文件很大,lambda的内存和时间限制让我感到恐慌。 -
我也在考虑在EC2机器上做这个工作,但是我失去了反应(如果我在不使用的时候关掉机器)或者我赔钱(如果我不关机的话)。
-
我被告知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应该很简单。