Guarde el dataframe de pandas como csv en gcloud storage bucket

from pyspark import SparkContext, SparkConf from pyspark.sql import SparkSession import gc import pandas as pd import datetime import numpy as np import sys APP_NAME = "DataFrameToCSV" spark = SparkSession\ .builder\ .appName(APP_NAME)\ .config("spark.sql.crossJoin.enabled","true")\ .getOrCreate() group_ids = [1,1,1,1,1,1,1,2,2,2,2,2,2,2] dates = ["2016-04-01","2016-04-01","2016-04-01","2016-04-20","2016-04-20","2016-04-28","2016-04-28","2016-04-05","2016-04-05","2016-04-05","2016-04-05","2016-04-20","2016-04-20","2016-04-29"] #event = [0,1,0,0,0,0,1,1,0,0,0,0,1,0] event = [0,1,1,0,1,0,1,0,0,1,0,0,0,0] dataFrameArr = np.column_stack((group_ids,dates,event)) df = pd.DataFrame(dataFrameArr,columns = ["group_ids","dates","event"]) 

El código de Python anterior se ejecutará en un clúster de chispa en gcloud dataproc. Me gustaría guardar el dataframe de pandas como archivo csv en gcloud storage bucket en gs: // mybucket / csv_data /

¿Cómo hago esto?

Por lo tanto, me di cuenta de cómo hacer esto. Continuando con el código anterior, aquí está la solución:

 sc = SparkContext.getOrCreate() from pyspark.sql import SQLContext sqlCtx = SQLContext(sc) sparkDf = sqlCtx.createDataFrame(df) sparkDf.coalesce(1).write.option("header","true").csv('gs://mybucket/csv_data') 

También puedes usar esta solución con Dask. Puede convertir su DataFrame a Dask DataFrame, que se puede escribir en csv en Cloud Storage

 import dask.dataframe as dd import pandas df # your Pandas DataFrame ddf = dd.from_pandas(df,npartitions=1, sort=True) ddf.to_csv('gs://YOUR_BUCKET/ddf-*.csv', index=False, sep=',', header=False, storage_options={'token': gcs.session.credentials}) 

El argumento storage_options es opcional.