我在这个过程中非常大的CSV文件的公司工作。客户端通过filepicker文件上传到Amazon S3。然后多个服务器进程可以并行地读取该文件(即,从不同的点开始)来处理它并将其存储在数据库中。可选的客户可以上传之前压缩文件。
如果我是正确的,那么我想办法采取S3 ZIP文件并生成解压缩的CSV,也对S3。
我可以编写代码来下载,解压缩,多文件上传回到S3,但我希望的一种高效,易扩展的解决方案。 AWS LAMBDA本来理想的运行代码(以避免供应不需要的资源),但执行时间被限制为60秒。加上使用情况似乎很简单和普通的我希望找到一个现有的解决方案。
你最好的选择可能是每一个有一个zip文件上传到S3的时间发送到SQS队列中的S3事件通知,并且对以上EC2实例投票站排队等待文件解压缩。
您可能只需要运行实例来做到这一点,但你也可以有一个旋转起来比较实例的自动缩放政策如果SQS队列的大小增长得太大单个实例做去荏苒足够快(被定义您)。
@ E.J。布伦南是正确的,我曾与AWS支持聊天,他们告诉我们不能用lambda来做到这一点的操作。以下是我从支持得到了指导。
希望它可以帮助一些之一。我浪费了大量的时间解决这个问题,
解决方案/周围工作!
一个更持久的斗争后,得到了我的技术领先的解决方案。我们可以用AWS Glue来解决这个问题。这有更多的内存来使用。它能够完成任务。
希望它可以帮助一些之一。
我使用没有应用一个EMR簇,只有一个节点(只有主节点,没有从站)和具有它运行一个运行壳脚本单个步骤。
shell脚本执行以下操作:
整个过程需时20分钟,以处理包含文件,总的100Gb的万兆zip文件。
当步骤终止时,EMR簇自动关闭。
注: :缺点是,如果没有上到/ mnt /文件夹足够的空间来下载和/或解压缩文件,步骤不会单独终止。它会等待,问了一回,你不能放弃......所以你必须手动终止集群... 所以,不要犹豫,加入EBS卷上更多的空间来避免这样的问题。