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

jeg*_*don 17 dataframe apache-spark apache-spark-sql pyspark

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

dataframe.repartition(1).save("s3n://mybucket/testfile","json")
Run Code Online (Sandbox Code Playgroud)

但是我从S3获得错误"你提议的上传超过了允许的最大大小",我知道亚马逊允许的最大文件大小是5GB.

是否可以使用Spark的S3分段上传?还是有另一种方法来解决这个问题?

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

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

非常感谢

JG

Jar*_*red 29

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

df.write.mode('append').json(yourtargetpath)
Run Code Online (Sandbox Code Playgroud)

  • @TheRandomSuite:你知道是否有可能避免hadoopish格式并将数据存储到我选择的s3键名下的文件中,而不是使用`_SUCCES`和`part-*`的目录? (14认同)

Ven*_*ive 6

尝试这个

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