he empezado el shell con databrick csv paquete

#../spark-1.6.1-bin-hadoop2.6/bin/pyspark --packages com.databricks:spark-csv_2.11:1.3.0

Entonces leí un archivo csv hizo algunas groupby op y el volcado de que a un archivo csv.

from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true').load(path.csv')   ####it has columns and df.columns works fine
type(df)   #<class 'pyspark.sql.dataframe.DataFrame'>
#now trying to dump a csv
df.write.format('com.databricks.spark.csv').save('path+my.csv')
#it creates a directory my.csv with 2 partitions
### To create single file i followed below line of code
#df.rdd.map(lambda x: ",".join(map(str, x))).coalesce(1).saveAsTextFile("path+file_satya.csv") ## this creates one partition in directory of csv name
#but in both cases no columns information(How to add column names to that csv file???)
# again i am trying to read that csv by
df_new = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load("the file i just created.csv")
#i am not getting any columns in that..1st row becomes column names

Por favor, no responder como agregar un esquema para dataframe después de read_csv o durante la lectura de mencionar los nombres de columna.

Pregunta1 – mientras daba csv dump es allí cualquier manera de la que puedo agregar el nombre de la columna con que???

Pregunta2: ¿existe un método para crear una sola archivo csv(no directory) que puede ser abierto por ms office o el bloc de notas++???

nota: actualmente no estoy usando clúster, Ya que es demasiado complejo para que la chispa principiante como yo. Si alguno puede proporcionar un enlace de cómo lidiar con to_csv en un único archivo en el entorno de clúster , que sería una gran ayuda.

OriginalEl autor Satya | 2016-07-27

4 Comentarios

  1. 8

    Intentar

    df.coalesce(1).write.format('com.databricks.spark.csv').save('path+my.csv',header = 'true')

    Tenga en cuenta que esto puede no ser un problema en su configuración actual, pero en muy grandes conjuntos de datos, puede ejecutar en problemas de memoria en el controlador. Esto también llevará más tiempo (en un escenario de clúster) como todo lo que tiene que empujar de nuevo a una sola ubicación.

    estoy usando un enorme conjunto de datos, pero la datset(después de hacer alguna función más que la gran conjunto de datos) ,quiero o/p como un archivo csv puede tener 1 millón de filas o menos . Estoy teniendo 28GB de RAM(en el Maestro y dos de sus esclavos). Definitivamente voy a probarlo a ver si es que me da error de Memoria o no. Sólo por curiosidad, se puede sugerir cuál será la configuración ideal, si quiero o/p csv acerca de 5millones Filas?
    He realizado principalmente mi re-la combinación de los archivos con otras herramientas fuera de Chispa (es decir, el gato, gzip, etc) si necesitaba ese formato. Respecto a la mejor configuración, depende de lo que usted está tratando de leer el archivo. La mayor parte de mi uso es de preprocesamiento y, a continuación, volver a importar a una base de datos SQL para vivir la consulta de ejecución masiva de las importaciones no ha requerido de un solo archivo.

    OriginalEl autor Mike Metzger

  2. 8

    Sólo en caso de que,
    en spark 2.1 usted puede crear un archivo csv con las siguientes líneas

    dataframe.coalesce(1) //So just a single part- file will be created
    .write.mode(SaveMode.Overwrite)
    .option("mapreduce.fileoutputcommitter.marksuccessfuljobs","false") //Avoid creating of crc files
    .option("header","true") //Write the header
    .csv("csvFullPath")
    

    OriginalEl autor FrancescoM

  3. 5

    con chispa >= 2.o, se puede hacer algo parecido

    df = spark.read.csv('path+filename.csv', sep = 'ifany', header=True )
    df.write.csv('path_filename of csv',header=True) ###yes still in partitions
    df.toPandas().to_csv('path_filename of csv',index=False)  ###single csv(Pandas Style)
    
    Cabe señalar que se puede obligar a una sola csv de haciendo df.coalesce(1).write.csv(..., header = True). Si estás creación de particiones en el csv, esto va a crear un archivo para cada partición. El nombre del archivo de salida será jerigonza.

    OriginalEl autor Satya

  4. 0

    tengo respuesta para la 1ª pregunta, era una cuestión de pasar un parámetro adicional header = ‘true’, junto con csv declaración

    df.write.format('com.databricks.spark.csv').save('path+my.csv',header = 'true')
    

    #Alternativa para la 2ª pregunta

    Utilizando topandas.to_csv , Pero de nuevo no quiero usar pandas aquí, así que por favor sugieren que si cualquier otra manera todo está ahí.

    OriginalEl autor Satya

Dejar respuesta

Please enter your comment!
Please enter your name here