需要CSV批处理的最佳做法/建议,并将其保存在AWS S3中

问题描述 投票:0回答:1

我有一个linux服务器,它将定期获取约300个CSV文件(每个1MB至200MB)。我需要检查文件的每一行,验证它的数据(想对每个文件进行数据库调用,并获取所有有效记录并将其保存在内存中以进行查找),对有效记录进行过滤/添加一些其他信息,保存所有记录在CSV文件中。对于X个输入文件,将生成X个输出文件。最后,这些文件应上传到AWS S3。我正在考虑2种方法。

  1. 使用POST方法创建Rest API,它将执行文件上传/处理(读取csv文件,验证,添加信息,保存到临时位置,最后上传到S3),将其部署在负载均衡器后面的多台服务器上,并通过所有300台服务器的HTTP方法。关注-这是个好方法吗? &如何发送300个以上的文件,以便可以利用LB后面的多个服务器的优势,并且由于文件处理可能会根据大小而花费时间,因此不想接收threadtimeout异常。还想跟踪HTTP响应以进行审核吗?
  2. [使用Sprint批处理-创建作业(1个作业将一次读取一个文件并进行处理),最后将文件上传到S3。关注-对于每个文件,我都希望进行数据库调用并获取该文件的所有有效记录,并将其保留在内存中,并针对该行进行验证。如果更多文件并行运行,会不会出现内存问题?
java post amazon-s3 spring-batch file-processing
1个回答
0
投票

系统的瓶颈将是每个文件的DB调用。如果您在数据库调用中包含SLA,则可以基于它在任何时间限制扩展(AWS中的Autoscaling)。

如果使用API​​方法,则可以发送S3文件的位置,让您的服务处理从S3获取文件并进行处理,然后将其上传到另一个位置。

如果使用批处理,则可以使用Glue Job,它在后台创建EMR进行处理。

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