在 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");
我正在尝试将 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");