【问题标题】:Convert thousands of small JSON files from s3 to one big CSV in lambda将数千个小 JSON 文件从 s3 转换为 lambda 中的一个大 CSV
【发布时间】:2021-04-08 11:08:06
【问题描述】:

我正在尝试使用 AWS Lambda 将多个小的 JSON 文件(大约 500,000 个 400-500 字节大小的文件,并且不再容易更改)合并到一个大的 CSV 文件中。我有一份工作是这样的:

  1. 使用 s3.listobjects() 获取密钥
  2. 使用 s3.getObject() 获取每个 JSON 文件(有更好的方法吗?)
  3. 在内存中创建一个 CSV 文件(在 nodejs 中执行此操作的最佳方法是什么?)
  4. 在 S3 中上传该文件

我很想知道是否有更好的方法来做这件事。谢谢!

【问题讨论】:

  • 这些文件是否在更改和/或是否正在添加新文件?如果这是一次性的,那么使用像 Lambda 这样的事件驱动环境就没有什么意义了——一个适度的 EC2,旋转起来做你需要的事情会更简单。而且还不清楚列出和读取 500K 文件需要多长时间。
  • @stdunbar 文件不易更改,并且在作业运行时不会添加新文件。这是我拥有的 lambda 工作流程的一部分,所以我试图将所有函数保留在 lambda 中。更容易维护。我想知道nodejs中的writeStream是否有任何优点
  • 如果此数据是静态的,那么不能通过 Lambda、EC2 或其他任何方式完成一次,然后再也不会这样做吗?
  • @stdunbar 这就是想法,只对给定文件夹执行一次。我正在尝试找到一种方法来自动化它

标签: json amazon-web-services csv amazon-s3 aws-lambda


【解决方案1】:

我建议使用 Amazon Athena

它允许您同时跨多个数据文件 (including JSON) 运行 SQL 命令,并且可以通过 Creating a Table from Query Results (CTAS) - Amazon Athena 创建输出文件。

【讨论】:

  • 感谢您的回复!我以前没有使用过 Athena,所以我想知道是否有一种方法可以从 lambda 中的 athena 中的 s3 文件子集触发生成 csv
  • 我不确定您所说的“触发器”是什么意思,但 AWS Lambda 函数当然可以进行 API 调用以在 Amazon Athena 中运行查询。我建议首先使用 Amazon Athena 管理控制台来创建和调试查询,然后您可以使用 Lambda 函数自动执行它。
猜你喜欢
  • 2021-09-19
  • 2021-05-15
  • 1970-01-01
  • 2018-11-14
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
相关资源
最近更新 更多