PySpark DataFrame konvertálása CSV-vé

Pyspark Dataframe Konvertalasa Csv Ve



Nézzük meg a PySpark DataFrame CSV-vé konvertálásának négy különböző forgatókönyvét. Közvetlenül a write.csv() metódussal konvertáljuk a PySpark DataFrame-et CSV-vé. A to_csv() függvény segítségével a PySpark Pandas DataFrame-et CSV-vé alakítjuk. Ez a NumPy tömbbe való konvertálással is lehetséges.

Tartalom témája:

Ha többet szeretne tudni a PySpark DataFrame és a modul telepítéséről, kövesse ezt cikk .







PySpark DataFrame CSV-vé a Pandas DataFrame-re való konvertálással

A to_csv() a Pandas modulban elérhető metódus, amely a Pandas DataFrame-et CSV-vé alakítja. Először is át kell alakítanunk a PySpark DataFrame-et Pandas DataFrame-re. A toPandas() metódus erre szolgál. Lássuk a to_csv() szintaxisát a paramétereivel együtt.



Szintaxis:



pandas_dataframe_obj.to_csv(útvonal/ 'file_name.csv' , fejléc ,index,oszlopok,mód...)
  1. Meg kell adnunk a CSV-fájl fájlnevét. Ha a letöltött CSV-fájlt a számítógép egy adott helyén szeretné tárolni, megadhatja az elérési utat a fájlnévvel együtt.
  2. Az oszlopok akkor jelennek meg, ha a fejléc „Igaz”-ra van állítva. Ha nincs szüksége oszlopokra, állítsa a fejlécet „False”-ra.
  3. Az indexek akkor vannak megadva, ha az index értéke „Igaz”. Ha nincs szüksége indexekre, állítsa az indexet „False”-ra.
  4. Az Oszlopok paraméter az oszlopnevek listáját veszi fel, amelyben megadhatjuk, hogy mely oszlopok legyenek kicsomagolva a CSV-fájlba.
  5. A rekordokat a mode paraméter segítségével tudjuk hozzáadni a CSV-hez. Hozzáfűzés – ehhez az „a”-t használják.

1. példa: A fejléc és az index paraméterekkel

Hozza létre a „skills_df” PySpark DataFrame-et 3 sorból és 4 oszlopból. Alakítsa át ezt a DataFrame-et CSV-vé úgy, hogy először konvertálja Pandas DataFrame-be.





import pyspark

a pyspark.sql-ből importálja a SparkSession-t

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

# készségadatok 3 sorral és 4 oszloppal

készségek =[{ 'azonosító' : 123 , 'személy' : 'Édesem' , 'készség' : 'festmény' , 'díj' : 25000 },

{ 'azonosító' : 112 , 'személy' : 'Mouni' , 'készség' : 'tánc' , 'díj' : 2000 },

{ 'azonosító' : 153 , 'személy' : 'Tulasi' , 'készség' : 'olvasás' , 'díj' : 1200 }

]

# hozza létre a készségek adatkeretét a fenti adatokból

skillek_df = linuxhint_spark_app.createDataFrame(skills)

skillek_df.show()

# Konvertálja a skill_df fájlt pandas DataFrame-re

pandas_skills_df= skillek_df.toPandas()

print(pandas_skills_df)

# Konvertálja ezt a DataFrame-et csv-vé fejléccel és indexszel

pandas_skills_df.to_csv( 'pandas_skills1.csv' , fejléc =Igaz, index=Igaz)

Kimenet:



Láthatjuk, hogy a PySpark DataFrame Pandas DataFrame-re lett konvertálva. Nézzük meg, hogy CSV formátumba konvertálva van-e oszlopnevekkel és indexekkel:

2. példa: Adja hozzá az adatokat a CSV-hez

Hozzon létre még egy PySpark DataFrame-et 1 rekorddal, és fűzze hozzá az első példánk részeként létrehozott CSV-fájlhoz. Győződjön meg arról, hogy a fejlécet „False”-ra kell állítanunk a mode paraméterrel együtt. Ellenkező esetben az oszlopneveket is sorként hozzáfűzi a rendszer.

import pyspark

a pyspark.sql-ből importálja a SparkSession-t

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

készségek =[{ 'azonosító' : 90 , 'személy' : 'Bhargav' , 'készség' : 'olvasás' , 'díj' : 12000 }

]

# hozza létre a készségek adatkeretét a fenti adatokból

skillek_df = linuxhint_spark_app.createDataFrame(skills)

# Konvertálja a skill_df fájlt pandas DataFrame-re

pandas_skills_df= skillek_df.toPandas()

# Adja hozzá ezt a DataFrame-et a pandas_skills1.csv fájlhoz

pandas_skills_df.to_csv( 'pandas_skills1.csv' , mód= 'a' , fejléc =Hamis)

CSV kimenet:

Láthatjuk, hogy egy új sor került hozzáadásra a CSV-fájlhoz.

3. példa: Az Oszlopok paraméterrel

Legyen ugyanaz a DataFrame, és alakítsuk át CSV-vé két oszloppal: „person” és „prize”.

import pyspark

a pyspark.sql-ből importálja a SparkSession-t

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

# készségadatok 3 sorral és 4 oszloppal

készségek =[{ 'azonosító' : 123 , 'személy' : 'Édesem' , 'készség' : 'festmény' , 'díj' : 25000 },

{ 'azonosító' : 112 , 'személy' : 'Mouni' , 'készség' : 'tánc' , 'díj' : 2000 },

{ 'azonosító' : 153 , 'személy' : 'Tulasi' , 'készség' : 'olvasás' , 'díj' : 1200 }

]

# hozza létre a készségek adatkeretét a fenti adatokból

skillek_df = linuxhint_spark_app.createDataFrame(skills)

# Konvertálja a skill_df fájlt pandas DataFrame-re

pandas_skills_df= skillek_df.toPandas()

# Konvertálja ezt a DataFrame-et csv-vé meghatározott oszlopokkal

pandas_skills_df.to_csv( 'pandas_skills2.csv' , oszlopok=[ 'személy' , 'díj' ])

CSV kimenet:

Láthatjuk, hogy a CSV-fájlban csak a „személy” és a „díj” oszlop található.

PySpark Pandas DataFrame-ből CSV-be a To_Csv() metódus használatával

A to_csv() a Pandas modulban elérhető metódus, amely a Pandas DataFrame-et CSV-vé alakítja. Először is át kell alakítanunk a PySpark DataFrame-et Pandas DataFrame-re. A toPandas() metódus erre szolgál. Lássuk a to_csv() szintaxisát a paramétereivel együtt:

Szintaxis:

pyspark_pandas_dataframe_obj.to_csv(path/ 'file_name.csv' , fejléc ,index,oszlopok,...)
  1. Meg kell adnunk a CSV-fájl fájlnevét. Ha a letöltött CSV-fájlt a számítógép egy adott helyén szeretné tárolni, megadhatja az elérési utat a fájlnévvel együtt.
  2. Az oszlopok akkor jelennek meg, ha a fejléc „Igaz”-ra van állítva. Ha nincs szüksége oszlopokra, állítsa a fejlécet „False”-ra.
  3. Az indexek akkor vannak megadva, ha az index értéke „Igaz”. Ha nincs szüksége indexekre, állítsa az indexet „False”-ra.
  4. Az oszlopok paraméter egy oszlopnévlistát vesz fel, amelyben megadhatjuk, hogy mely oszlopok legyenek kibontva a CSV-fájlba.

1. példa: Az Oszlopok paraméterrel

Hozzon létre egy PySpark Pandas DataFrame-et 3 oszloppal, és alakítsa át CSV-vé a to_csv() segítségével a „person” és „prize” oszlopokkal.

pyspark import pandáktól

pyspark_pandas_dataframe=pandas.DataFrame({ 'azonosító' :[ 90 , 78 , 90 , 57 ], 'személy' :[ 'Édesem' , 'Mouni' , 'saját maga' , 'radha' ], 'díj' :[ 1 , 2 , 3 , 4 ]})

print(pyspark_pandas_dataframe)

# Konvertálja ezt a DataFrame-et csv-vé meghatározott oszlopokkal

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas1' , oszlopok=[ 'személy' , 'díj' ])

Kimenet:

Láthatjuk, hogy a PySpark Pandas DataFrame két partícióval konvertálódik CSV-vé. Minden partíció 2 rekordot tartalmaz. Ezenkívül a CSV-fájlban csak a „személy” és a „díj” oszlopok szerepelnek.

1. partíciós fájl:

2. partíciós fájl:

2. példa: A fejléc paraméterrel

Használja az előző DataFrame-et, és adja meg a fejléc paraméterét a „True” beállítással.

pyspark import pandáktól

pyspark_pandas_dataframe=pandas.DataFrame({ 'azonosító' :[ 90 , 78 , 90 , 57 ], 'személy' :[ 'Édesem' , 'Mouni' , 'saját maga' , 'radha' ], 'díj' :[ 1 , 2 , 3 , 4 ]})

# Konvertálja ezt a DataFrame-et csv-vé fejléccel.

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas2' , fejléc = igaz)

CSV kimenet:

Láthatjuk, hogy a PySpark Pandas DataFrame két partícióval konvertálódik CSV-vé. Minden partíció 2 rekordot tartalmaz oszlopnevekkel.

1. partíciós fájl:

2. partíciós fájl:

PySpark Pandas DataFrame CSV-vé NumPy tömbbé konvertálással

Lehetőségünk van a PySpark Pandas DataFrame-et CSV-vé konvertálni a Numpy tömbbe való konvertálással. A to_numpy() a PySpark Pandas modulban elérhető metódus, amely a PySpark Pandas DataFrame-et NumPy tömbbé alakítja.

Szintaxis:

pyspark_pandas_dataframe_obj.to_numpy()

Nem fog semmilyen paramétert megadni.

A Tofile() módszer használata

A NumPy tömbbe való konvertálás után a tofile() metódussal konvertálhatjuk a NumPy-t CSV-vé. Itt minden rekordot egy új cellában, oszloponként tárol a CSV-fájlban.

Szintaxis:

array_obj.to_numpy(fájlnév/útvonal,sep=’’)

Felveszi a CSV fájl nevét vagy elérési útját és egy elválasztót.

Példa:

Hozzon létre PySpark Pandas DataFrame-et 3 oszlopból és 4 rekordból, és alakítsa át CSV formátumba úgy, hogy először NumPy tömbbé konvertálja.

pyspark import pandáktól

pyspark_pandas_dataframe=pandas.DataFrame({ 'azonosító' :[ 90 , 78 , 90 , 57 ], 'személy' :[ 'Édesem' , 'Mouni' , 'saját maga' , 'radha' ], 'díj' :[ 1 , 2 , 3 , 4 ]})

# Konvertálja a fenti DataFrame-et numpy tömbbé

converted = pyspark_pandas_dataframe.to_numpy()

nyomtatás (átváltva)

# A tofile() használata

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

Kimenet:

[[ 90 'Édesem' 1 ]

[ 78 'Mouni' 2 ]

[ 90 'saját maga' 3 ]

[ 57 'radha' 4 ]]

Láthatjuk, hogy a PySpark Pandas DataFrame NumPy tömbbé konvertálva (12 érték). Ha látja a CSV-adatokat, minden cellaértéket egy új oszlopban tárol.

PySpark DataFrame-ből CSV-be a Write.Csv() metódus használatával

A write.csv() metódus azt a fájlnevet/útvonalat veszi fel, ahová a CSV fájlt paraméterként el kell mentenünk.

Szintaxis:

dataframe_object.coalesce( 1 ).write.csv( 'fájl név' )

Valójában a CSV partícióként (több mint egy) kerül mentésre. Ennek elkerülése érdekében az összes particionált CSV-fájlt egybe egyesítjük. Ebben a forgatókönyvben a coalesce() függvényt használjuk. Most már csak egy CSV-fájlt láthatunk a PySpark DataFrame összes sorával.

Példa:

Tekintsük a PySpark DataFrame-et 4 rekorddal és 4 oszloppal. Írja ezt a DataFrame-et CSV-fájlba a „market_details” nevű fájllal.

import pyspark

a pyspark.sql-ből importálja a SparkSession-t

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

# piaci adat 4 sorból és 4 oszlopból

piac =[{ 'középső' : 'mz-001' , 'm_name' : 'ABC' , 'm_város' : 'Delhi' , 'm_state' : 'Delhi' },

{ 'középső' : 'mz-002' , 'm_name' : 'XYZ' , 'm_város' : 'patna' , 'm_state' : 'szerencse' },

{ 'középső' : 'mz-003' , 'm_name' : 'PQR' , 'm_város' : 'Florida' , 'm_state' : 'egy' },

{ 'középső' : 'mz-004' , 'm_name' : 'ABC' , 'm_város' : 'Delhi' , 'm_state' : 'szerencse' }

]



# hozza létre a piaci adatkeretet a fenti adatokból

market_df = linuxhint_spark_app.createDataFrame(market)

# Aktuális piaci adatok

market_df.show()

# írás.csv()

market_df.coalesce( 1 ).write.csv( 'piaci_részletek' )

Kimenet:

Nézzük meg a fájlt:

Nyissa meg az utolsó fájlt a rekordok megtekintéséhez.

Következtetés

A PySpark DataFrame-et CSV-vé alakító négy különböző forgatókönyvet példákkal ismerkedtünk meg különböző paraméterek figyelembevételével. Amikor a PySpark DataFrame-mel dolgozik, két lehetősége van ennek a DataFrame-nek a konvertálására CSV-vé: az egyik módja a write() metódus, a másik pedig a to_csv() metódus használata a Pandas DataFrame-re való konvertálással. Ha a PySpark Pandas DataFrame-mel dolgozik, a to_csv() és a tofile() függvényeket is használhatja a NumPy tömbbé konvertálással.