在 S3 中将大型 Spark Dataframe 保存为单个 json 文件

Save a large Spark Dataframe as a single json file in S3

我正在尝试将 Spark DataFrame(超过 20G)保存到 Amazon S3 中的单个 json 文件,我保存数据帧的代码如下:

dataframe.repartition(1).save("s3n://mybucket/testfile","json")

但是我从 S3 "Your proposed upload exceeds the maximum allowed size" 收到一个错误,我知道亚马逊允许的最大文件大小是 5GB。

Spark 可以使用 S3 分段上传吗?或者有其他方法可以解决这个问题?

顺便说一句,我需要单个文件中的数据,因为另一个用户将在之后下载它。

*我在使用 spark-ec2 脚本创建的 3 节点集群中使用 apache spark 1.3.1。

非常感谢

JG

s3a 我认为不是 Spark 中的生产版本。 我会说设计不合理。 repartition(1) 会很糟糕(你告诉 spark 的是将所有分区合并为一个分区)。 我建议说服下游从文件夹而不是单个文件下载内容

我会尝试将大数据帧分成一系列较小的数据帧,然后将它们附加到目标中的同一文件中。

df.write.mode('append').json(yourtargetpath)

试试这个

dataframe.write.format("org.apache.spark.sql.json").mode(SaveMode.Append).save("hdfs://localhost:9000/sampletext.txt");