csv - true - spark sql tutorial
Cuadro de datos Spark guardar en un solo archivo en la ubicación de HDS (1)
No es posible usar la biblioteca de chispa estándar, pero puede usar la API de Hadoop para administrar el sistema de archivos: guarde la salida en el directorio temporal y luego mueva el archivo a la ruta solicitada. Por ejemplo (en pyspark):
df.coalesce(1) /
.write.format("com.databricks.spark.csv") /
.option("header", "true") /
.save("mydata.csv-temp")
from py4j.java_gateway import java_import
java_import(spark._jvm, ''org.apache.hadoop.fs.Path'')
fs = spark._jvm.org.apache.hadoop.fs.FileSystem.get(spark._jsc.hadoopConfiguration())
file = fs.globStatus(sc._jvm.Path(''mydata.csv-temp/part*''))[0].getPath().getName()
fs.rename(sc._jvm.Path(''mydata.csv-temp/'' + file), sc._jvm.Path(''mydata.csv''))
fs.delete(sc._jvm.Path(''mydata.csv-temp''), True)
Esta pregunta ya tiene una respuesta aquí:
Tengo dataframe y quiero guardar en un solo archivo en la ubicación de hdfs.
Encontré la solución aquí. Escribo un solo archivo CSV usando spark-csv.
df.coalesce(1)
.write.format("com.databricks.spark.csv")
.option("header", "true")
.save("mydata.csv")
Pero todos los datos se escribirán en mydata.csv / part-00000 y yo quería ser mi archivo mydata.csv.
¿es eso posible?
cualquier ayuda aprecie