【问题标题】:Better/best approach to load huge CSV file into DynamoDb将巨大的 CSV 文件加载到 DynamoDb 中的更好/最佳方法
【发布时间】:2017-08-20 10:21:38
【问题描述】:

我的本​​地机器上有一个巨大的.csv 文件。我想将该数据加载到 DynamoDB(eu-west-1,爱尔兰)中。你会怎么做?

  1. 我的第一个方法是:

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

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

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

  3. 我也在考虑在 EC2 机器上完成这项工作,但我失去了反应(如果我在不使用机器时关闭机器)或者我赔钱(如果我不关闭机器)。

  4. 有人告诉我 Kinesis 可能是一种解决方案,但我不相信。

如果您是我,请告诉我在 DynamoDB 中获取 huge CSV 文件的最佳方法是什么。我想尽量减少“第二次”上传的工作量。

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

【问题讨论】:

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


    【解决方案1】:

    如果你想以 AWS 的方式来做,那么数据管道可能是最好的方法:

    这里有一个教程,它比你需要的更多,但应该可以帮助你入门:

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

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

    【讨论】:

    • @e-j-brennan 你知道这个工作流程的简单分步教程吗? (我从未使用过 EMR,也从未使用过 Hive,我担心正确使用它们会花费太多时间)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      • 2018-03-23
      • 2021-12-25
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多