Topik Kandungan:
- PySpark DataFrame kepada CSV dengan Menukar kepada Pandas DataFrame
- PySpark Pandas DataFrame ke CSV Menggunakan Kaedah To_Csv().
- PySpark Pandas DataFrame kepada CSV dengan Menukar kepada NumPy Array
- PySpark DataFrame ke CSV Menggunakan Kaedah Write.Csv().
Jika anda ingin mengetahui tentang PySpark DataFrame dan pemasangan modul, lakukan perkara ini artikel .
PySpark DataFrame kepada CSV dengan Menukar kepada Pandas DataFrame
to_csv() ialah kaedah yang tersedia dalam modul Pandas yang menukar Pandas DataFrame kepada CSV. Pertama, kami perlu menukar PySpark DataFrame kami kepada Pandas DataFrame. Kaedah toPandas() digunakan untuk melakukannya. Mari lihat sintaks to_csv() bersama dengan parameternya.
Sintaks:
pandas_dataframe_obj.to_csv(path/ 'file_name.csv' , kepala , indeks, lajur, mod...)
- Kami perlu menentukan nama fail fail CSV. Jika anda ingin menyimpan CSV yang dimuat turun di lokasi tertentu pada PC anda, anda juga boleh menentukan laluan bersama-sama dengan nama fail.
- Lajur disertakan jika pengepala ditetapkan kepada 'Benar'. Jika anda tidak memerlukan lajur, tetapkan pengepala kepada 'Salah'.
- Indeks ditentukan jika indeks ditetapkan kepada 'Benar'. Jika anda tidak memerlukan indeks, tetapkan indeks kepada 'Salah'.
- Parameter lajur mengambil senarai nama lajur yang mana kami boleh menentukan lajur tertentu yang diekstrak ke fail CSV.
- Kami dapat menambah rekod pada CSV menggunakan parameter mod. Tambah – “a” digunakan untuk melakukan ini.
Contoh 1: Dengan Parameter Pengepala dan Indeks
Cipta “skills_df” PySpark DataFrame dengan 3 baris dan 4 lajur. Tukar DataFrame ini kepada CSV dengan terlebih dahulu menukarnya menjadi Pandas DataFrame.
import pyspark
daripada pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()
# data kemahiran dengan 3 baris dan 4 lajur
kemahiran =[{ 'ID' : 123 , 'orang' : 'Sayang' , 'kemahiran' : 'lukisan' , 'hadiah' : 25000 },
{ 'ID' : 112 , 'orang' : 'Mouni' , 'kemahiran' : 'menari' , 'hadiah' : 2000 },
{ 'ID' : 153 , 'orang' : 'Tulasi' , 'kemahiran' : 'membaca' , 'hadiah' : 1200 }
]
# cipta kerangka data kemahiran daripada data di atas
kemahiran_df = linuxhint_spark_app.createDataFrame(kemahiran)
skills_df.show()
# Tukar skills_df kepada panda DataFrame
panda_skills_df= skills_df.toPandas()
print(pandas_skills_df)
# Tukar DataFrame ini kepada csv dengan pengepala dan indeks
panda_skills_df.to_csv( 'pandas_skills1.csv' , kepala =Benar, indeks=Benar)
Pengeluaran:
Kita dapat melihat bahawa PySpark DataFrame ditukar kepada Pandas DataFrame. Mari lihat sama ada ia ditukar kepada CSV dengan nama lajur dan indeks:
Contoh 2: Tambahkan Data pada CSV
Buat satu lagi PySpark DataFrame dengan 1 rekod dan tambahkan ini pada CSV yang dibuat sebagai sebahagian daripada contoh pertama kami. Pastikan kita perlu menetapkan pengepala kepada 'Salah' bersama-sama dengan parameter mod. Jika tidak, nama lajur juga dilampirkan sebagai baris.
import pysparkdaripada pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()
kemahiran =[{ 'ID' : 90 , 'orang' : 'Bhargav' , 'kemahiran' : 'membaca' , 'hadiah' : 12000 }
]
# cipta kerangka data kemahiran daripada data di atas
kemahiran_df = linuxhint_spark_app.createDataFrame(kemahiran)
# Tukar skills_df kepada panda DataFrame
panda_skills_df= skills_df.toPandas()
# Tambahkan DataFrame ini pada fail pandas_skills1.csv
panda_skills_df.to_csv( 'pandas_skills1.csv' , mod= 'a' , kepala =Salah)
Output CSV:
Kita dapat melihat bahawa baris baharu ditambahkan pada fail CSV.
Contoh 3: Dengan Parameter Lajur
Mari kita miliki DataFrame yang sama dan tukarkannya kepada CSV dengan dua lajur: 'orang' dan 'hadiah'.
import pysparkdaripada pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()
# data kemahiran dengan 3 baris dan 4 lajur
kemahiran =[{ 'ID' : 123 , 'orang' : 'Sayang' , 'kemahiran' : 'lukisan' , 'hadiah' : 25000 },
{ 'ID' : 112 , 'orang' : 'Mouni' , 'kemahiran' : 'menari' , 'hadiah' : 2000 },
{ 'ID' : 153 , 'orang' : 'Tulasi' , 'kemahiran' : 'membaca' , 'hadiah' : 1200 }
]
# cipta kerangka data kemahiran daripada data di atas
kemahiran_df = linuxhint_spark_app.createDataFrame(kemahiran)
# Tukar skills_df kepada panda DataFrame
panda_skills_df= skills_df.toPandas()
# Tukar DataFrame ini kepada csv dengan lajur tertentu
panda_skills_df.to_csv( 'pandas_skills2.csv' , lajur=[ 'orang' , 'hadiah' ])
Output CSV:
Kita dapat melihat bahawa hanya lajur 'orang' dan 'hadiah' wujud dalam fail CSV.
PySpark Pandas DataFrame ke CSV Menggunakan Kaedah To_Csv().
to_csv() ialah kaedah yang tersedia dalam modul Pandas yang menukar Pandas DataFrame kepada CSV. Pertama, kami perlu menukar PySpark DataFrame kami kepada Pandas DataFrame. Kaedah toPandas() digunakan untuk melakukannya. Mari lihat sintaks to_csv() bersama dengan parameternya:
Sintaks:
pyspark_pandas_dataframe_obj.to_csv(path/ 'file_name.csv' , kepala , indeks, lajur,...)- Kami perlu menentukan nama fail fail CSV. Jika anda ingin menyimpan CSV yang dimuat turun di lokasi tertentu pada PC anda, anda juga boleh menentukan laluan bersama-sama dengan nama fail.
- Lajur disertakan jika pengepala ditetapkan kepada 'Benar'. Jika anda tidak memerlukan lajur, tetapkan pengepala kepada 'Salah'.
- Indeks ditentukan jika indeks ditetapkan kepada 'Benar'. Jika anda tidak memerlukan indeks, tetapkan indeks kepada 'Salah'.
- Parameter lajur mengambil senarai nama lajur yang mana kami boleh menentukan lajur tertentu yang diekstrak ke fail CSV.
Contoh 1: Dengan Parameter Lajur
Buat PySpark Pandas DataFrame dengan 3 lajur dan tukarkannya kepada CSV menggunakan to_csv() dengan lajur 'orang' dan 'hadiah'.
daripada panda import pysparkpyspark_pandas_dataframe=pandas.DataFrame({ 'ID' :[ 90 , 78 , 90 , 57 ], 'orang' :[ 'Sayang' , 'Mouni' , 'dirinya' , 'radha' ], 'hadiah' :[ 1 , 2 , 3 , 4 ]})
print(pyspark_pandas_dataframe)
# Tukar DataFrame ini kepada csv dengan lajur tertentu
pyspark_pandas_dataframe.to_csv( 'pyspark_pandas1' , lajur=[ 'orang' , 'hadiah' ])
Pengeluaran:
Kita dapat melihat bahawa PySpark Pandas DataFrame ditukar kepada CSV dengan dua partition. Setiap partition memegang 2 rekod. Selain itu, lajur dalam CSV ialah 'orang' dan 'hadiah' sahaja.
Fail Pemisahan 1:
Fail Pemisahan 2:
Contoh 2: Dengan Parameter Pengepala
Gunakan DataFrame sebelumnya dan tentukan parameter pengepala dengan menetapkannya kepada 'Benar'.
daripada panda import pysparkpyspark_pandas_dataframe=pandas.DataFrame({ 'ID' :[ 90 , 78 , 90 , 57 ], 'orang' :[ 'Sayang' , 'Mouni' , 'dirinya' , 'radha' ], 'hadiah' :[ 1 , 2 , 3 , 4 ]})
# Tukar DataFrame ini kepada csv dengan pengepala.
pyspark_pandas_dataframe.to_csv( 'pyspark_pandas2' , kepala =Benar)
Output CSV:
Kita dapat melihat bahawa PySpark Pandas DataFrame ditukar kepada CSV dengan dua partition. Setiap partition memegang 2 rekod dengan nama lajur.
Fail Pemisahan 1:
Fail Pemisahan 2:
PySpark Pandas DataFrame kepada CSV dengan Menukar kepada NumPy Array
Kami mempunyai pilihan untuk menukar PySpark Pandas DataFrame kepada CSV dengan menukar kepada tatasusunan Numpy. The to_numpy() ialah kaedah yang tersedia dalam modul PySpark Pandas yang menukarkan PySpark Pandas DataFrame kepada array NumPy.
Sintaks:
pyspark_pandas_dataframe_obj.to_numpy()Ia tidak akan mengambil sebarang parameter.
Menggunakan Kaedah Tofile().
Selepas menukar kepada tatasusunan NumPy, kita boleh menggunakan kaedah tofile() untuk menukar NumPy kepada CSV. Di sini, ia menyimpan setiap rekod dalam kolumnar sel baharu dalam fail CSV.
Sintaks:
array_obj.to_numpy(nama fail/path,sep=’ ’)Ia mengambil nama fail atau laluan CSV dan pemisah.
Contoh:
Cipta PySpark Pandas DataFrame dengan 3 lajur dan 4 rekod dan tukarkannya kepada CSV dengan terlebih dahulu menukarnya menjadi tatasusunan NumPy.
daripada panda import pysparkpyspark_pandas_dataframe=pandas.DataFrame({ 'ID' :[ 90 , 78 , 90 , 57 ], 'orang' :[ 'Sayang' , 'Mouni' , 'dirinya' , 'radha' ], 'hadiah' :[ 1 , 2 , 3 , 4 ]})
# Tukarkan DataFrame di atas kepada tatasusunan numpy
ditukar = pyspark_pandas_dataframe.to_numpy()
cetakan (ditukar)
# Menggunakan tofile()
converted.tofile( 'converted1.csv' , sep = ',' )
Pengeluaran:
[[ 90 'Sayang' 1 ][ 78 'Mouni' 2 ]
[ 90 'dirinya' 3 ]
[ 57 'radha' 4 ]]
Kita dapat melihat bahawa PySpark Pandas DataFrame ditukar kepada tatasusunan NumPy (12 nilai). Jika anda boleh melihat data CSV, ia menyimpan setiap nilai sel dalam lajur baharu.
PySpark DataFrame ke CSV Menggunakan Kaedah Write.Csv().
Kaedah write.csv() mengambil nama/laluan fail di mana kita perlu menyimpan fail CSV sebagai parameter.
Sintaks:
dataframe_object.coalesce( 1 ).write.csv( 'nama fail' )Sebenarnya, CSV disimpan sebagai partition (lebih daripada satu). Untuk menyingkirkan ini, kami menggabungkan semua fail CSV yang dipartisi menjadi satu. Dalam senario ini, kami menggunakan fungsi coalesce(). Kini, kita boleh melihat hanya satu fail CSV dengan semua baris daripada PySpark DataFrame.
Contoh:
Pertimbangkan PySpark DataFrame dengan 4 rekod yang mempunyai 4 lajur. Tulis DataFrame ini ke CSV dengan fail bernama 'market_details'.
import pysparkdaripada pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()
# data pasaran dengan 4 baris dan 4 lajur
pasaran =[{ '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' : 'bertuah' },
{ 'm_id' : 'mz-003' , 'm_name' : 'PQR' , 'm_city' : 'florida' , 'm_state' : 'satu' },
{ 'm_id' : 'mz-004' , 'm_name' : 'ABC' , 'm_city' : 'delhi' , 'm_state' : 'bertuah' }
]
# cipta kerangka data pasaran daripada data di atas
market_df = linuxhint_spark_app.createDataFrame(market)
# Data pasaran sebenar
market_df.show()
# write.csv()
market_df.coalesce( 1 ).write.csv( 'market_details' )
Pengeluaran:
Mari semak fail:
Buka fail terakhir untuk melihat rekod.
Kesimpulan
Kami mempelajari empat senario berbeza yang menukar PySpark DataFrame kepada CSV dengan contoh dengan mempertimbangkan parameter yang berbeza. Apabila anda bekerja dengan PySpark DataFrame, anda mempunyai dua pilihan untuk menukar DataFrame ini kepada CSV: satu cara menggunakan kaedah write() dan satu lagi menggunakan kaedah to_csv() dengan menukar kepada Pandas DataFrame. Jika anda bekerja dengan PySpark Pandas DataFrame, anda juga boleh menggunakan to_csv() dan tofile() dengan menukar kepada array NumPy.