使用Spark覆盖S3文件

时间:2018-04-18 05:01:56

标签: apache-spark amazon-s3

我有一个用例,在两个数据集之间执行连接后,我需要在S3上将每一行写入一个单独的文件(更新现有文件)。 Spark支持这个吗?

如果没有,我们可以明确地使用S3客户端将每个条目写入S3中的新文件吗?我应该注意哪些副作用?

2 个答案:

答案 0 :(得分:0)

它不是关于Spark .. S3不支持更新,你应该立即存储整个块。

理论上你可以使用multipart upload(MPU)来连接多个s3对象部分,但是MPU旨在支持大于5GB的上传和最小的部分大小为5MB

每个作业都可以创建新的S3对象(example

答案 1 :(得分:0)

正如我在评论中所说,S3中的大量小文件通常都是不好的做法。也就是说,如果你只有有限数量的记录要写,有不同的选择。

以下是一些例子:

  • 使用DataFrameWriter,覆盖模式和partitionBy唯一 专栏
  • 使用df.rdd.mapPartitions并将每条记录写入S3 手动使用hadoop S3FileSystem。
祝你好运。