web-dev-qa-db-fra.com

Enregistrer un grand Spark Dataframe comme un seul fichier json dans S3

Im essayant d'enregistrer un Spark DataFrame (de plus de 20G) dans un seul fichier json dans Amazon S3, mon code pour enregistrer le dataframe est comme ceci:

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

Mais je reçois une erreur de S3 "Votre téléchargement proposé dépasse la taille maximale autorisée", je sais que la taille de fichier maximale autorisée par Amazon est de 5 Go.

Est-il possible d'utiliser le téléchargement multipartie S3 avec Spark? ou il existe un autre moyen de résoudre ce problème?

Btw j'ai besoin des données dans un seul fichier car un autre utilisateur va les télécharger après.

* J'utilise Apache spark 1.3.1 dans un cluster à 3 nœuds créé avec le script spark-ec2.

Merci beaucoup

JG

17
jegordon

J'essaierais de séparer la grande trame de données en une série de trames de données plus petites que vous ajoutez ensuite dans le même fichier dans la cible.

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

Essaye ça

dataframe.write.format("org.Apache.spark.sql.json").mode(SaveMode.Append).save("hdfs://localhost:9000/sampletext.txt");
6
Venu A Positive