我尝试将 Spark 数据帧(超过 20G)保存到 Amazon S3 中的单个 json 文件中,我保存数据帧的代码如下所示:
dataframe.repartition(1).save("s3n://mybucket/testfile","json")
但是我从 S3 收到错误"您建议的上传超过了允许的最大大小",我知道亚马逊允许的最大文件大小为 5GB。
是否可以将 S3 分段上传与 Spark 一起使用? 或者有另一种方法可以解决这个问题?
顺便说一句,我需要单个文件中的数据,因为另一个用户之后会下载它。
*我在使用 spark-ec2 脚本创建的 3 节点集群中使用 apache spark 1.3.1。
多谢
JG
我会尝试将大型数据帧分成一系列较小的数据帧,然后将其附加到目标中的同一文件中。
df.write.mode('append').json(yourtargetpath)
试试这个
dataframe.write.format("org.apache.spark.sql.json").mode(SaveMode.Append).save("hdfs://localhost:9000/sampletext.txt");
s3a不是Spark的生产版本。我会说设计不合理。repartition(1) 会很糟糕 (你告诉 Spark 的是将所有分区合并为一个分区)。我建议说服下游从文件夹而不是单个文件下载内容