Agradecemos tu apoyo para extender nuestros enunciados referente a las ciencias de la computación.
Si el marco de datos cabe en la memoria de un controlador y desea guardarlo en el sistema de archivos local, puede convertir Spark DataFrame en Pandas DataFrame local usando toPandas
método y luego simplemente use to_csv
:
df.toPandas().to_csv('mycsv.csv')
De lo contrario, puede usar spark-csv:
-
Chispa 1.3
df.save('mycsv.csv', 'com.databricks.spark.csv')
-
Chispa 1.4+
df.write.format('com.databricks.spark.csv').save('mycsv.csv')
En Spark 2.0+ puedes usar csv
fuente de datos directamente:
df.write.csv('mycsv.csv')
Para Apache Spark 2+, para guardar el marco de datos en un solo archivo csv. Usar el siguiente comando
query.repartition(1).write.csv("cc_out.csv", sep='|')
Aquí 1
indicar que necesito una partición de csv solamente. Puedes cambiarlo según tus requisitos.
Si no puede usar spark-csv, puede hacer lo siguiente:
df.rdd.map(lambda x: ",".join(map(str, x))).coalesce(1).saveAsTextFile("file.csv")
Si necesita manejar cadenas con saltos de línea o comas, eso no funcionará. Utilizar esta:
import csv
import cStringIO
def row2csv(row):
buffer = cStringIO.StringIO()
writer = csv.writer(buffer)
writer.writerow([str(s).encode("utf-8") for s in row])
buffer.seek(0)
return buffer.read().strip()
df.rdd.map(row2csv).coalesce(1).saveAsTextFile("file.csv")
Comentarios y puntuaciones del tutorial
Acuérdate de que tienes permiso de añadir una estimación acertada .