structtype read apache-spark dataframe apache-spark-sql pyspark

apache-spark - read - rdd to dataframe pyspark



Guarde un gran marco de datos Spark como un solo archivo json en S3 (3)

Im tratando de guardar un Spark DataFrame (de más de 20G) en un solo archivo json en Amazon S3, mi código para guardar el dataframe es así:

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

Pero estoy obteniendo un error de S3 "Su carga propuesta excede el tamaño máximo permitido", sé que el tamaño máximo de archivo permitido por Amazon es de 5GB.

¿Es posible usar S3 multipart upload con Spark? o hay otra forma de resolver esto?

Por cierto, necesito los datos en un solo archivo porque otro usuario va a descargarlo después.

* Estoy usando apache spark 1.3.1 en un clúster de 3 nodos creado con el script spark-ec2.

Muchas gracias

JG


s3a no es la versión de producción en Spark, creo. Yo diría que el diseño no es bueno. la repartición (1) va a ser terrible (lo que está diciendo chispa es fusionar todas las particiones a una sola). Sugeriría convencer al usuario de que descargue contenido de una carpeta en lugar de un solo archivo


Intentaría separar el marco de datos grande en una serie de marcos de datos más pequeños que luego anexaría al mismo archivo en el objetivo.

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


Prueba esto

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