【问题标题】:Reading CSV files from S3 in EC2 using Java使用 Java 从 EC2 中的 S3 读取 CSV 文件
【发布时间】:2019-06-12 09:53:07
【问题描述】:

在当前的实现中,我有实际读取 2 个或更多 CSV 文件的 Java 代码,根据业务逻辑组合数据并将数据保存到新的 CSV 文件中。这个 java jar 文件在 TIBCO 中通过执行目录监视来触发,即,当放置新的文件集时,会触发这个 java 代码。 一切都很好,工作良好,但由于 AWS 云,要求托管 EC2 实例并执行此 java 代码,但不使用 TIBCO 触发,而是构建一些 java(如独立/后台进程)应用程序。 由于我不是来自 Java 背景,我不确定如何实现这个独立/后台进程,该进程保留一个 watch n S3 文件夹并触发该进程。任何帮助将不胜感激。

【问题讨论】:

  • 请具体说明问题的哪一部分给您带来了困难。如果您向我们展示您目前编写的代码,它将帮助我们理解您的问题。
  • 实际上没有“S3 文件夹”之类的东西。 S3 不是文件系统 - 它是键/值存储。尽管很多时候键看起来 像文件系统路径,但文件夹实际上并不存在。您可能需要使用不同的机制。阅读有关 S3 和 AWS lambdas 的信息,因为它们可以由 S3 事件触发。
  • 抱歉,感谢您的快速回复,让我试着解释一下我的要求
  • 1. 2 到 4 个 CSV 文件将上传到 S3 存储桶(到特定文件夹,例如 InputFiles) 2. 实际读取这 2-4 个 csv 文件的自定义 java 代码,应用一些业务逻辑并将输出写入新文件并保存到(S3 存储桶,例如 OutPutFiles) 3. CSV 文件大小可能约为 200MB 4. 由于复杂的业务逻辑,在当前的本地实施中,完成该过程大约需要 12-14 分钟。由于 Lambda 有 15 分钟的限制,因此考虑拥有一个 EC2 实例并使用一些 Java 应用程序来读取 S3 存储桶的文件并将输出保存回 S3 存储桶
  • 我不确定这是否是正确的架构,而且我是 Java 新手,因此不确定是否可以在 Ec2 中使用 Java 后台服务应用程序来读取 CSV 表单 S3。

标签: java amazon-web-services amazon-s3 amazon-ec2 amazon-dynamodb


【解决方案1】:

听起来您的要求是:

  • 文件上传到 Amazon S3
  • 这应该会触发一些代码来处理文件
  • 然后(大概)将生成的文件存储回 Amazon S3

最好的方法是:

  • 在存储桶上配置 Amazon S3 事件,以在上传文件时触发 AWS Lambda 函数
  • 将为 Lambda 函数提供新对象的存储桶名称和密钥(文件名)
  • 然后 Lambda 函数可以运行您自己的代码来处理文件,包括从 Amazon S3 下载/上传到 Amazon S3

此方法的好处是您不需要需要 Amazon EC2 实例。相反,Lambda 函数将作为 无服务器函数 触发、执行和退出。

Lambda 函数可以用多种语言编写,如 Java、Python、.Net、Go 等。

查看文档和示例。

见:Using AWS Lambda with Amazon S3 - AWS Lambda

有一件事:我不确定您的代码需要做什么,但是为每个上传的文件触发了 Lambda 函数。因此,如果目标是将多个文件合并到一个文件中,您需要弄清楚应该触发作业启动的内容。这可能涉及忽略某些文件,直到出现将触发该过程的正确文件。

【讨论】:

  • 谢谢 John,1. CSV 文件大小可能在 200MB 左右,需要一些复杂的业务逻辑。
  • 由于 Lambda 有 15 分钟的限制,因此考虑拥有一个 EC2 实例并使用一些 Java 应用程序来读取 S3 存储桶的文件并将输出保存回 S3 存储桶。
  • 我不确定这是否是在 Ec2 实例中执行代码的正确方法
  • 您当然可以在 EC2 实例上执行此操作。最大的要求是确定是什么“触发”了作业运行。您可以使用 Lambda(由 S3 触发,如上所述)在 EC2 实例上启动作业(以某种方式)。然后,您可以选择让 EC2 实例连续运行(如果全天有作业进来,那就太好了),或者只在需要时启动它,然后它可以在作业完成时停止或终止。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-14
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
相关资源
最近更新 更多