Tartalom témája:
- PySpark DataFrame CSV-vé a Pandas DataFrame-re való konvertálással
- PySpark Pandas DataFrame-ből CSV-be a To_Csv() metódus használatával
- PySpark Pandas DataFrame CSV-vé NumPy tömbbé konvertálással
- PySpark DataFrame-ből CSV-be a Write.Csv() metódus használatával
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...)
- 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.
- 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.
- Az indexek akkor vannak megadva, ha az index értéke „Igaz”. Ha nincs szüksége indexekre, állítsa az indexet „False”-ra.
- Az Oszlopok paraméter az oszlopnevek listáját veszi fel, amelyben megadhatjuk, hogy mely oszlopok legyenek kicsomagolva a CSV-fájlba.
- 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 pysparka 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 pysparka 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,...)- 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.
- 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.
- Az indexek akkor vannak megadva, ha az index értéke „Igaz”. Ha nincs szüksége indexekre, állítsa az indexet „False”-ra.
- 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ólpyspark_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ólpyspark_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ólpyspark_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 pysparka 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.