使用spark从s3读取CSV文件

时间:2018-04-26 10:49:49

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

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

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

我想出了两个设计但我对火花有点困惑,因为火花环境要求连接打开所有s3桶。

  1. 使用spark streaming从s3读取CSV并处理它并逐行转换为JSON,并将JSON数据附加到Postgres的JSONB列中。
  2. 使用弹簧和弹簧java - >在服务器上下载文件然后开始处理并将其转换为JSON。
  3. 任何人都可以帮助我找到正确的方向吗?

1 个答案:

答案 0 :(得分:1)

如果它是每天,只有100MB,那么你并不需要大规模工具。我估计<基本下载和处理的分钟,甚至远程,之后是postgres加载的。哪个帖子offers

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

我不打扰任何并行工具;即使Spark也希望使用32-64MB的块,所以你不会超过2-3个工人。如果文件是.gz,那么你只能得到一个。

那就是说,如果你想学习火花,你可以在火花壳中做到这一点。首先在本地下载,只是为了节省时间和金钱。