Emne for innhold:
- PySpark DataFrame til CSV ved å konvertere til Pandas DataFrame
- PySpark Pandas DataFrame til CSV ved å bruke To_Csv()-metoden
- PySpark Pandas DataFrame til CSV ved å konvertere til NumPy Array
- PySpark DataFrame til CSV ved hjelp av Write.Csv()-metoden
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...)
- 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.
- Kolonner er inkludert hvis overskriften er satt til 'True'. Hvis du ikke trenger kolonner, sett overskriften til 'False'.
- Indekser spesifiseres hvis indeksen er satt til 'True'. Hvis du ikke trenger indekser, sett indeksen til 'False'.
- Columns-parameteren tar en liste over kolonnenavn der vi kan spesifisere hvilke spesielle kolonner som trekkes ut til CSV-filen.
- 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 pysparkfra 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 pysparkfra 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,...)- 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.
- Kolonner er inkludert hvis overskriften er satt til 'True'. Hvis du ikke trenger kolonner, sett overskriften til 'False'.
- Indekser spesifiseres hvis indeksen er satt til 'True'. Hvis du ikke trenger indekser, sett indeksen til 'False'.
- 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 pandaerpyspark_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 pandaerpyspark_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 pandaerpyspark_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 pysparkfra 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.