解压缩在Amazon S3的大型ZIP文件

问题描述 投票:6回答:2

我在这个过程中非常大的CSV文件的公司工作。客户端通过filepicker文件上传到Amazon S3。然后多个服务器进程可以并行地读取该文件(即,从不同的点开始)来处理它并将其存储在数据库中。可选的客户可以上传之前压缩文件。

  1. 我是正确的ZIP格式不允许在平行的单个文件的解压?即,没有办法有多个进程读取来自不同的偏移的ZIP文件(可能与块之间有一些重叠),并从那里流未压缩数据?

如果我是正确的,那么我想办法采取S3 ZIP文件并生成解压缩的CSV,也对S3。

  1. 亚马逊是否提供可以简单地执行此任务的任何服务?我希望数据管道可以做的工作,但它似乎有局限性。例如,“CopyActivity不支持复制多亚马逊S3文件”(source)似乎表明,我不能解压缩什么比使用5GB大。我的数据管道的了解是非常有限的,所以我不知道这是这个任务还是在那里我会看怎么合适。
  2. 有没有做这项工作的任何SaaS的?

我可以编写代码来下载,解压缩,多文件上传回到S3,但我希望的一种高效,易扩展的解决方案。 AWS LAMBDA本来理想的运行代码(以避免供应不需要的资源),但执行时间被限制为60秒。加上使用情况似乎很简单和普通的我希望找到一个现有的解决方案。

amazon-web-services amazon-s3 zip unzip
2个回答
2
投票

你最好的选择可能是每一个有一个zip文件上传到S3的时间发送到SQS队列中的S3事件通知,并且对以上EC2实例投票站排队等待文件解压缩。

您可能只需要运行实例来做到这一点,但你也可以有一个旋转起来比较实例的自动缩放政策如果SQS队列的大小增长得太大单个实例做去荏苒足够快(被定义您)。


0
投票

@ E.J。布伦南是正确的,我曾与AWS支持聊天,他们告诉我们不能用lambda来做到这一点的操作。以下是我从支持得到了指导。

  • 每当一个文件在S3下降。
  • 触发到SQS通知。
  • 有EC2听SQS。
  • 做的Un ZIP。
  • 添加其他通知SQS和下lambda函数可以做进一步的处理。

希望它可以帮助一些之一。我浪费了大量的时间解决这个问题,

解决方案/周围工作!

一个更持久的斗争后,得到了我的技术领先的解决方案。我们可以用AWS Glue来解决这个问题。这有更多的内存来使用。它能够完成任务。

希望它可以帮助一些之一。


0
投票

我使用没有应用一个EMR簇,只有一个节点(只有主节点,没有从站)和具有它运行一个运行壳脚本单个步骤。

shell脚本执行以下操作:

  1. 从S3中thezeep.zip文件下载到的/ ​​mnt文件夹中的主节点
  2. 解压缩文件内容到/ mnt / thezeep /
  3. 提取的文件上传到S3。

整个过程需时20分钟,以处理包含文件,总的100Gb的万兆zip文件。

当步骤终止时,EMR簇自动关闭。

注: :缺点是,如果没有上到/ mnt /文件夹足够的空间来下载和/或解压缩文件,步骤不会单独终止。它会等待,问了一回,你不能放弃......所以你必须手动终止集群... 所以,不要犹豫,加入EBS卷上更多的空间来避免这样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.