java - 使用spark从s3读取CSV文件

标签 java spring apache-spark amazon-s3 spring-xd

我是 Spark 新手。我有一个场景,我需要从 AWS s3 读取和处理 CSV 文件。该文件每天都会生成,因此我需要读取并处理它并将数据转储到 Postgres 中。

我想并行处理这个大文件以节省时间和内存。

我提出了两种设计,但我对 Spark 有点困惑,因为 Spark 上下文需要与所有 s3 存储桶打开连接。

  1. 使用 Spark Streaming 从 s3 读取 CSV 并对其进行处理,然后逐行转换为 JSON,并将 JSON 数据附加到 Postgres 的 JSONB 列中。
  2. 使用 spring 和 java -> 在服务器上下载文件,然后开始处理并将其转换为 JSON。

谁能帮我找到正确的方向?

最佳答案

如果每天都需要,并且只有 100MB,那么您实际上并不需要太多大型工具。我估计基本下载和处理需要 < 分钟,甚至是远程下载和处理,之后 postgres 负载就会增加。哪个 Postgres offers

尝试在本地执行此操作,使用 aws s3 cp 复制到本地系统,然后尝试使用 postgres。

我不会使用任何并行工具;即使 Spark 也希望使用 32-64MB 的 block ,因此您不会获得超过 2-3 个工作线程。如果文件是 .gz,您将得到一个。

也就是说,如果你想学习 Spark,你可以在 Spark-Shell 中做到这一点。不过,先在本地下载,只是为了节省时间和金钱。

关于java - 使用spark从s3读取CSV文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50041091/

相关文章:

java - 如何使用 JAXB Java 类型适配器

java - 在 Spring 集成测试期间刷新/重建特定 beans

java - 有没有办法动态生成 Spring Data Jpa 查询?

scala - 读取超时 Httpfs HDFS

apache-spark - Spark 2.1 PySpark 错误 : sc. textFile ("test.txt".repartition(2).collect()

scala - 如何从 spark 执行器读取 HDFS 文件?

java - 在 Maven 中设置 selenium-java 依赖项,但 Selenium 要求提供驱动程序的路径

java - 签名的小程序在 IE8/Window 7 中不起作用

java - CRL 处理中比较 interim_reasons_mask 和reasons_mask 的原因

java - 如何包装来自 Spring REST 存储库的 JSON 响应?