Konvertering av PySpark DataFrame til CSV

Konvertering Av Pyspark Dataframe Til Csv



La oss se på de fire forskjellige scenariene for å konvertere PySpark DataFrame til CSV. Direkte bruker vi metoden write.csv() for å konvertere PySpark DataFrame til CSV. Ved å bruke to_csv()-funksjonen konverterer vi PySpark Pandas DataFrame til CSV. Det kan også være mulig ved å konvertere det til NumPy-arrayet.

Emne for innhold:

Hvis du vil vite om PySpark DataFrame og modulinstallasjon, gå gjennom dette artikkel .







PySpark DataFrame til CSV ved å konvertere til Pandas DataFrame

to_csv() er en metode som er tilgjengelig i Pandas-modulen som konverterer Pandas DataFrame til CSV. Først må vi konvertere PySpark DataFrame til Pandas DataFrame. Metoden toPandas() brukes til å gjøre det. La oss se syntaksen til to_csv() sammen med parameterne.



Syntaks:



pandas_dataframe_obj.to_csv(bane/ 'filnavn.csv' , Overskrift ,indeks,kolonner,modus...)
  1. Vi må spesifisere filnavnet til CSV-filen. Hvis du vil lagre den nedlastede CSV-en på et bestemt sted på PC-en din, kan du også angi banen sammen med filnavnet.
  2. Kolonner er inkludert hvis overskriften er satt til 'True'. Hvis du ikke trenger kolonner, sett overskriften til 'False'.
  3. Indekser spesifiseres hvis indeksen er satt til 'True'. Hvis du ikke trenger indekser, sett indeksen til 'False'.
  4. Columns-parameteren tar en liste over kolonnenavn der vi kan spesifisere hvilke spesielle kolonner som trekkes ut til CSV-filen.
  5. Vi kan legge til postene i CSV ved å bruke modusparameteren. Legg til - 'a' brukes til å gjøre dette.

Eksempel 1: Med topptekst- og indeksparametere

Lag 'skills_df' PySpark DataFrame med 3 rader og 4 kolonner. Konverter denne DataFrame til CSV ved først å konvertere den til Pandas DataFrame.





importere pyspark

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux hint' ).getOrCreate()

# ferdighetsdata med 3 rader og 4 kolonner

ferdigheter =[{ 'id' : 123 , 'person' : 'Honning' , 'ferdighet' : 'maleri' , 'premie' : 25 000 },

{ 'id' : 112 , 'person' : 'Mouni' , 'ferdighet' : 'danse' , 'premie' : 2000 },

{ 'id' : 153 , 'person' : 'Tulasi' , 'ferdighet' : 'lesning' , 'premie' : 1200 }

]

# lag ferdighetsdatarammen fra dataene ovenfor

skills_df = linuxhint_spark_app.createDataFrame(skills)

skills_df.show()

# Konverter skills_df til pandas DataFrame

pandas_skills_df= skills_df.toPandas()

print(pandas_skills_df)

# Konverter denne DataFrame til csv med overskrift og indeks

pandas_skills_df.to_csv( 'pandas_skills1.csv' , Overskrift =True, index=True)

Produksjon:



Vi kan se at PySpark DataFrame er konvertert til Pandas DataFrame. La oss se om den er konvertert til CSV med kolonnenavn og indekser:

Eksempel 2: Legg til dataene i CSV

Lag en PySpark DataFrame til med 1 post og legg denne til CSV som er opprettet som en del av vårt første eksempel. Pass på at vi må sette overskriften til 'False' sammen med modusparameteren. Ellers legges også kolonnenavnene til som en rad.

importere pyspark

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux hint' ).getOrCreate()

ferdigheter =[{ 'id' : 90 , 'person' : 'Bhargav' , 'ferdighet' : 'lesning' , 'premie' : 12000 }

]

# lag ferdighetsdatarammen fra dataene ovenfor

skills_df = linuxhint_spark_app.createDataFrame(skills)

# Konverter skills_df til pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# Legg til denne DataFrame til pandas_skills1.csv-filen

pandas_skills_df.to_csv( 'pandas_skills1.csv' , modus= 'en' , Overskrift =False)

CSV-utdata:

Vi kan se at en ny rad er lagt til i CSV-filen.

Eksempel 3: Med kolonneparameteren

La oss ha den samme DataFrame og konvertere den til CSV med to kolonner: 'person' og 'premie'.

importere pyspark

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux hint' ).getOrCreate()

# ferdighetsdata med 3 rader og 4 kolonner

ferdigheter =[{ 'id' : 123 , 'person' : 'Honning' , 'ferdighet' : 'maleri' , 'premie' : 25 000 },

{ 'id' : 112 , 'person' : 'Mouni' , 'ferdighet' : 'danse' , 'premie' : 2000 },

{ 'id' : 153 , 'person' : 'Tulasi' , 'ferdighet' : 'lesning' , 'premie' : 1200 }

]

# lag ferdighetsdatarammen fra dataene ovenfor

skills_df = linuxhint_spark_app.createDataFrame(skills)

# Konverter skills_df til pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# Konverter denne DataFrame til csv med spesifikke kolonner

pandas_skills_df.to_csv( 'pandas_skills2.csv' , kolonner=[ 'person' , 'premie' ])

CSV-utdata:

Vi kan se at bare «person»- og «premie»-kolonnene finnes i CSV-filen.

PySpark Pandas DataFrame til CSV ved å bruke To_Csv()-metoden

to_csv() er en metode som er tilgjengelig i Pandas-modulen som konverterer Pandas DataFrame til CSV. Først må vi konvertere PySpark DataFrame til Pandas DataFrame. Metoden toPandas() brukes til å gjøre det. La oss se syntaksen til to_csv() sammen med parameterne:

Syntaks:

pyspark_pandas_dataframe_obj.to_csv(bane/ 'filnavn.csv' , Overskrift ,indeks,kolonner,...)
  1. Vi må spesifisere filnavnet til CSV-filen. Hvis du vil lagre den nedlastede CSV-en på et bestemt sted på PC-en din, kan du også angi banen sammen med filnavnet.
  2. Kolonner er inkludert hvis overskriften er satt til 'True'. Hvis du ikke trenger kolonner, sett overskriften til 'False'.
  3. Indekser spesifiseres hvis indeksen er satt til 'True'. Hvis du ikke trenger indekser, sett indeksen til 'False'.
  4. Kolonneparameteren tar en liste over kolonnenavn der vi kan spesifisere hvilke spesielle kolonner som trekkes ut til CSV-filen.

Eksempel 1: Med kolonneparameteren

Lag en PySpark Pandas DataFrame med 3 kolonner og konverter den til CSV ved å bruke to_csv() med kolonnene 'person' og 'premie'.

fra pyspark import pandaer

pyspark_pandas_dataframe=pandas.DataFrame({ 'id' :[ 90 , 78 , 90 , 57 ], 'person' :[ 'Honning' , 'Mouni' , 'han selv' , 'radha' ], 'premie' :[ 1 , 2 , 3 , 4 ]})

print(pyspark_pandas_dataframe)

# Konverter denne DataFrame til csv med spesifikke kolonner

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas1' , kolonner=[ 'person' , 'premie' ])

Produksjon:

Vi kan se at PySpark Pandas DataFrame er konvertert til CSV med to partisjoner. Hver partisjon har 2 poster. Dessuten er kolonnene i CSV-en bare 'person' og 'premie'.

Partisjonsfil 1:

Partisjonsfil 2:

Eksempel 2: Med overskriftsparameteren

Bruk forrige DataFrame og spesifiser overskriftsparameteren ved å sette den til 'True'.

fra pyspark import pandaer

pyspark_pandas_dataframe=pandas.DataFrame({ 'id' :[ 90 , 78 , 90 , 57 ], 'person' :[ 'Honning' , 'Mouni' , 'han selv' , 'radha' ], 'premie' :[ 1 , 2 , 3 , 4 ]})

# Konverter denne DataFrame til csv med header.

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas2' , Overskrift =sant)

CSV-utdata:

Vi kan se at PySpark Pandas DataFrame er konvertert til CSV med to partisjoner. Hver partisjon har 2 poster med kolonnenavn.

Partisjonsfil 1:

Partisjonsfil 2:

PySpark Pandas DataFrame til CSV ved å konvertere til NumPy Array

Vi har en mulighet til å konvertere PySpark Pandas DataFrame til CSV ved å konvertere til Numpy-arrayen. to_numpy() er en metode som er tilgjengelig i PySpark Pandas-modulen som konverterer PySpark Pandas DataFrame til NumPy-matrisen.

Syntaks:

pyspark_pandas_dataframe_obj.to_numpy()

Det vil ikke ta noen parametere.

Ved å bruke Tofile()-metoden

Etter å ha konvertert til NumPy-matrisen, kan vi bruke tofile()-metoden for å konvertere NumPy til CSV. Her lagrer den hver post i en ny celle kolonnevis i CSV-fil.

Syntaks:

array_obj.to_numpy(filnavn/bane,sep=’ ’)

Den tar filnavnet eller banen til en CSV og en separator.

Eksempel:

Lag PySpark Pandas DataFrame med 3 kolonner og 4 poster og konverter den til CSV ved først å konvertere den til en NumPy-array.

fra pyspark import pandaer

pyspark_pandas_dataframe=pandas.DataFrame({ 'id' :[ 90 , 78 , 90 , 57 ], 'person' :[ 'Honning' , 'Mouni' , 'han selv' , 'radha' ], 'premie' :[ 1 , 2 , 3 , 4 ]})

# Konverter ovennevnte DataFrame til numpy array

converted = pyspark_pandas_dataframe.to_numpy()

print (konvertert)

# Bruker tofile()

converted.tofile( 'converted1.csv' , sep = ',' )

Produksjon:

[[ 90 'Honning' 1 ]

[ 78 'Mouni' 2 ]

[ 90 'han selv' 3 ]

[ 57 'radha' 4 ]]

Vi kan se at PySpark Pandas DataFrame er konvertert til en NumPy-matrise (12 verdier). Hvis du kan se CSV-dataene, lagrer den hver celleverdi i en ny kolonne.

PySpark DataFrame til CSV ved hjelp av Write.Csv()-metoden

Write.csv()-metoden tar filnavnet/banen der vi må lagre CSV-filen som en parameter.

Syntaks:

dataframe_object.coalesce( 1 ).write.csv( 'filnavn' )

Faktisk er CSV-en lagret som partisjoner (mer enn én). For å bli kvitt dette slår vi sammen alle de partisjonerte CSV-filene til én. I dette scenariet bruker vi funksjonen coalesce() . Nå kan vi bare se én CSV-fil med alle rader fra PySpark DataFrame.

Eksempel:

Tenk på PySpark DataFrame med 4 poster som har 4 kolonner. Skriv denne DataFrame til CSV med filen kalt 'market_details'.

importere pyspark

fra pyspark.sql importerer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux hint' ).getOrCreate()

# markedsdata med 4 rader og 4 kolonner

marked =[{ 'm_id' : 'mz-001' , 'm_name' : 'ABC' , 'm_city' : 'delhi' , 'm_state' : 'delhi' },

{ 'm_id' : 'mz-002' , 'm_name' : 'XYZ' , 'm_city' : 'patna' , 'm_state' : 'heldig' },

{ 'm_id' : 'mz-003' , 'm_name' : 'PQR' , 'm_city' : 'florida' , 'm_state' : 'en' },

{ 'm_id' : 'mz-004' , 'm_name' : 'ABC' , 'm_city' : 'delhi' , 'm_state' : 'heldig' }

]



# opprett markedsdatarammen fra dataene ovenfor

market_df = linuxhint_spark_app.createDataFrame(market)

# Faktiske markedsdata

market_df.show()

# skrive.csv()

market_df.coalesce( 1 ).write.csv( 'markedsdetaljer' )

Produksjon:

La oss se etter filen:

Åpne den siste filen for å se postene.

Konklusjon

Vi lærte de fire forskjellige scenariene som konverterer PySpark DataFrame til CSV med eksempler ved å vurdere forskjellige parametere. Når du jobber med PySpark DataFrame, har du to alternativer for å konvertere denne DataFrame til CSV: én måte er å bruke write()-metoden og en annen er å bruke to_csv()-metoden ved å konvertere til Pandas DataFrame. Hvis du jobber med PySpark Pandas DataFrame, kan du også bruke to_csv() og tofile() ved å konvertere til NumPy-matrisen.