Menukar PySpark DataFrame kepada CSV

Menukar Pyspark Dataframe Kepada Csv



Mari lihat empat senario berbeza untuk menukar PySpark DataFrame kepada CSV. Secara langsung, kami menggunakan kaedah write.csv() untuk menukar PySpark DataFrame kepada CSV. Menggunakan fungsi to_csv(), kami menukar PySpark Pandas DataFrame kepada CSV. Ia juga boleh dilakukan dengan menukarnya kepada tatasusunan NumPy.

Topik Kandungan:

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...)
  1. 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.
  2. Lajur disertakan jika pengepala ditetapkan kepada 'Benar'. Jika anda tidak memerlukan lajur, tetapkan pengepala kepada 'Salah'.
  3. Indeks ditentukan jika indeks ditetapkan kepada 'Benar'. Jika anda tidak memerlukan indeks, tetapkan indeks kepada 'Salah'.
  4. Parameter lajur mengambil senarai nama lajur yang mana kami boleh menentukan lajur tertentu yang diekstrak ke fail CSV.
  5. 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 pyspark

daripada 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 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)

# 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,...)
  1. 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.
  2. Lajur disertakan jika pengepala ditetapkan kepada 'Benar'. Jika anda tidak memerlukan lajur, tetapkan pengepala kepada 'Salah'.
  3. Indeks ditentukan jika indeks ditetapkan kepada 'Benar'. Jika anda tidak memerlukan indeks, tetapkan indeks kepada 'Salah'.
  4. 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 pyspark

pyspark_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 pyspark

pyspark_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 pyspark

pyspark_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 pyspark

daripada 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.