Mengonversi PySpark DataFrame ke CSV

Mengonversi Pyspark Dataframe Ke Csv



Mari kita lihat empat skenario berbeda untuk mengonversi PySpark DataFrame ke CSV. Secara langsung, kami menggunakan metode write.csv() untuk mengonversi PySpark DataFrame ke CSV. Menggunakan fungsi to_csv() , kami mengonversi PySpark Pandas DataFrame ke CSV. Itu juga bisa dilakukan dengan mengonversinya ke array NumPy.

Topik Isi:

Jika Anda ingin tahu tentang PySpark DataFrame dan pemasangan modul, baca ini artikel .







PySpark DataFrame ke CSV dengan Mengonversi ke Pandas DataFrame

to_csv() adalah metode yang tersedia di modul Pandas yang mengonversi Pandas DataFrame ke CSV. Pertama, kita perlu mengonversi PySpark DataFrame menjadi Pandas DataFrame. Metode toPandas() digunakan untuk melakukan itu. Mari kita lihat sintaks to_csv() beserta parameternya.



Sintaksis:



pandas_dataframe_obj.to_csv(jalur/ 'nama_berkas.csv' , tajuk , indeks, kolom, mode...)
  1. Kita perlu menentukan nama file dari file CSV. Jika Anda ingin menyimpan CSV yang diunduh di lokasi tertentu di PC Anda, Anda juga dapat menentukan jalur beserta nama filenya.
  2. Kolom disertakan jika tajuk diatur ke 'True'. Jika Anda tidak memerlukan kolom, setel tajuk ke 'Salah'.
  3. Indeks ditentukan jika indeks disetel ke 'True'. Jika Anda tidak membutuhkan indeks, setel indeks ke 'False'.
  4. Parameter kolom mengambil daftar nama kolom di mana kita dapat menentukan kolom mana yang diekstrak ke file CSV.
  5. Kami dapat menambahkan catatan ke CSV menggunakan parameter mode. Tambahkan – “a” digunakan untuk melakukan ini.

Contoh 1: Dengan Parameter Header dan Indeks

Buat PySpark DataFrame “skills_df” dengan 3 baris dan 4 kolom. Ubah DataFrame ini menjadi CSV dengan terlebih dahulu mengubahnya menjadi Pandas DataFrame.





impor pyspark

dari pyspark.sql impor SparkSession

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

# data keterampilan dengan 3 baris dan 4 kolom

keterampilan = [{ 'pengenal' : 123 , 'orang' : 'Sayang' , 'keahlian' : 'lukisan' , 'hadiah' : 25000 },

{ 'pengenal' : 112 , 'orang' : 'Mouni' , 'keahlian' : 'menari' , 'hadiah' : 2000 },

{ 'pengenal' : 153 , 'orang' : 'Tulasi' , 'keahlian' : 'membaca' , 'hadiah' : 1200 }

]

# buat kerangka data keterampilan dari data di atas

skills_df = linuxhint_spark_app.createDataFrame(keterampilan)

skills_df.show()

# Konversikan skills_df ke pandas DataFrame

pandas_skills_df= skills_df.toPandas()

cetak(pandas_skills_df)

# Ubah DataFrame ini menjadi csv dengan header dan index

pandas_skills_df.to_csv( 'pandas_skills1.csv' , tajuk =Benar, indeks=Benar)

Keluaran:



Kita dapat melihat bahwa PySpark DataFrame diubah menjadi Pandas DataFrame. Mari kita lihat apakah itu dikonversi ke CSV dengan nama kolom dan indeks:

Contoh 2: Tambahkan Data ke CSV

Buat satu lagi PySpark DataFrame dengan 1 record dan tambahkan ini ke CSV yang dibuat sebagai bagian dari contoh pertama kita. Pastikan bahwa kita perlu menyetel header ke 'False' bersama dengan parameter mode. Jika tidak, nama kolom juga ditambahkan sebagai baris.

impor pyspark

dari pyspark.sql impor SparkSession

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

keterampilan = [{ 'pengenal' : 90 , 'orang' : 'Bhargav' , 'keahlian' : 'membaca' , 'hadiah' : 12000 }

]

# buat kerangka data keterampilan dari data di atas

skills_df = linuxhint_spark_app.createDataFrame(keterampilan)

# Konversikan skills_df ke pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# Tambahkan DataFrame ini ke file pandas_skills1.csv

pandas_skills_df.to_csv( 'pandas_skills1.csv' , modus= 'A' , tajuk =Salah)

Keluaran CSV:

Kita dapat melihat bahwa baris baru ditambahkan ke file CSV.

Contoh 3: Dengan Parameter Kolom

Mari kita memiliki DataFrame yang sama dan mengubahnya menjadi CSV dengan dua kolom: 'orang' dan 'hadiah'.

impor pyspark

dari pyspark.sql impor SparkSession

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

# data keterampilan dengan 3 baris dan 4 kolom

keterampilan = [{ 'pengenal' : 123 , 'orang' : 'Sayang' , 'keahlian' : 'lukisan' , 'hadiah' : 25000 },

{ 'pengenal' : 112 , 'orang' : 'Mouni' , 'keahlian' : 'menari' , 'hadiah' : 2000 },

{ 'pengenal' : 153 , 'orang' : 'Tulasi' , 'keahlian' : 'membaca' , 'hadiah' : 1200 }

]

# buat kerangka data keterampilan dari data di atas

skills_df = linuxhint_spark_app.createDataFrame(keterampilan)

# Konversikan skills_df ke pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# Konversikan DataFrame ini ke csv dengan kolom tertentu

pandas_skills_df.to_csv( 'pandas_skills2.csv' , kolom=[ 'orang' , 'hadiah' ])

Keluaran CSV:

Kita dapat melihat bahwa hanya kolom “orang” dan “hadiah” yang ada di file CSV.

PySpark Pandas DataFrame ke CSV Menggunakan Metode To_Csv()

to_csv() adalah metode yang tersedia di modul Pandas yang mengonversi Pandas DataFrame ke CSV. Pertama, kita perlu mengonversi PySpark DataFrame menjadi Pandas DataFrame. Metode toPandas() digunakan untuk melakukan itu. Mari kita lihat sintaks to_csv() beserta parameternya:

Sintaksis:

pyspark_pandas_dataframe_obj.to_csv(jalur/ 'nama_berkas.csv' , tajuk , indeks, kolom,...)
  1. Kita perlu menentukan nama file dari file CSV. Jika Anda ingin menyimpan CSV yang diunduh di lokasi tertentu di PC Anda, Anda juga dapat menentukan jalur beserta nama filenya.
  2. Kolom disertakan jika tajuk diatur ke 'True'. Jika Anda tidak memerlukan kolom, setel tajuk ke 'Salah'.
  3. Indeks ditentukan jika indeks disetel ke 'True'. Jika Anda tidak membutuhkan indeks, setel indeks ke 'False'.
  4. Parameter kolom mengambil daftar nama kolom di mana kita dapat menentukan kolom mana yang diekstrak ke file CSV.

Contoh 1: Dengan Parameter Kolom

Buat DataFrame PySpark Pandas dengan 3 kolom dan konversikan ke CSV menggunakan to_csv() dengan kolom 'orang' dan 'hadiah'.

dari panda impor pyspark

pyspark_pandas_dataframe=pandas.DataFrame({ 'pengenal' :[ 90 , 78 , 90 , 57 ], 'orang' :[ 'Sayang' , 'Mouni' , 'diri' , 'radha' ], 'hadiah' :[ 1 , 2 , 3 , 4 ]})

cetak(pyspark_pandas_dataframe)

# Konversikan DataFrame ini ke csv dengan kolom tertentu

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas1' , kolom=[ 'orang' , 'hadiah' ])

Keluaran:

Kita dapat melihat bahwa DataFrame PySpark Pandas dikonversi ke CSV dengan dua partisi. Setiap partisi memegang 2 catatan. Selain itu, kolom di CSV hanya berisi 'orang' dan 'hadiah'.

File Partisi 1:

File Partisi 2:

Contoh 2: Dengan Parameter Header

Gunakan DataFrame sebelumnya dan tentukan parameter header dengan menyetelnya ke 'True'.

dari panda impor pyspark

pyspark_pandas_dataframe=pandas.DataFrame({ 'pengenal' :[ 90 , 78 , 90 , 57 ], 'orang' :[ 'Sayang' , 'Mouni' , 'diri' , 'radha' ], 'hadiah' :[ 1 , 2 , 3 , 4 ]})

# Konversikan DataFrame ini ke csv dengan header.

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas2' , tajuk = Benar)

Keluaran CSV:

Kita dapat melihat bahwa DataFrame PySpark Pandas dikonversi ke CSV dengan dua partisi. Setiap partisi memegang 2 catatan dengan nama kolom.

File Partisi 1:

File Partisi 2:

PySpark Pandas DataFrame ke CSV dengan Mengonversi ke NumPy Array

Kami memiliki opsi untuk mengonversi PySpark Pandas DataFrame ke CSV dengan mengonversinya menjadi larik Numpy. to_numpy() adalah metode yang tersedia dalam modul PySpark Pandas yang mengonversi PySpark Pandas DataFrame ke larik NumPy.

Sintaksis:

pyspark_pandas_dataframe_obj.to_numpy()

Itu tidak akan mengambil parameter apa pun.

Menggunakan Metode Tofile()

Setelah mengonversi ke array NumPy, kita dapat menggunakan metode tofile() untuk mengonversi NumPy ke CSV. Di sini, ia menyimpan setiap catatan dalam kolom sel baru dalam file CSV.

Sintaksis:

array_obj.to_numpy(nama file/jalur,sep=’ ’)

Dibutuhkan nama file atau jalur CSV dan pemisah.

Contoh:

Buat DataFrame PySpark Pandas dengan 3 kolom dan 4 catatan dan konversikan ke CSV dengan terlebih dahulu mengubahnya menjadi larik NumPy.

dari panda impor pyspark

pyspark_pandas_dataframe=pandas.DataFrame({ 'pengenal' :[ 90 , 78 , 90 , 57 ], 'orang' :[ 'Sayang' , 'Mouni' , 'diri' , 'radha' ], 'hadiah' :[ 1 , 2 , 3 , 4 ]})

# Ubah DataFrame di atas menjadi array numpy

dikonversi = pyspark_pandas_dataframe.to_numpy()

cetak (dikonversi)

# Menggunakan tofile()

dikonversi.tofile( 'converted1.csv' , sep = ',' )

Keluaran:

[[ 90 'Sayang' 1 ]

[ 78 'Mouni' 2 ]

[ 90 'diri' 3 ]

[ 57 'radha' 4 ]]

Kita dapat melihat bahwa DataFrame PySpark Pandas dikonversi menjadi larik NumPy (12 nilai). Jika Anda dapat melihat data CSV, ini menyimpan setiap nilai sel di kolom baru.

PySpark DataFrame ke CSV Menggunakan Metode Write.Csv()

Metode write.csv() mengambil nama file/jalur tempat kita perlu menyimpan file CSV sebagai parameter.

Sintaksis:

dataframe_object.coalesce( 1 ).write.csv( 'nama file' )

Sebenarnya, CSV disimpan sebagai partisi (lebih dari satu). Untuk menghilangkan ini, kami menggabungkan semua file CSV yang dipartisi menjadi satu. Dalam skenario ini, kami menggunakan fungsi coalesce(). Sekarang, kita hanya dapat melihat satu file CSV dengan semua baris dari PySpark DataFrame.

Contoh:

Pertimbangkan DataFrame PySpark dengan 4 catatan yang memiliki 4 kolom. Tulis DataFrame ini ke CSV dengan file bernama “market_details”.

impor pyspark

dari pyspark.sql impor SparkSession

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

# data pasar dengan 4 baris dan 4 kolom

pasar =[{ 'pertengahan' : 'mz-001' , 'nama_m' : 'ABC' , 'm_city' : 'delhi' , 'm_status' : 'delhi' },

{ 'pertengahan' : 'mz-002' , 'nama_m' : 'XYZ' , 'm_city' : 'patna' , 'm_status' : 'keberuntungan' },

{ 'pertengahan' : 'mz-003' , 'nama_m' : 'PQR' , 'm_city' : 'florida' , 'm_status' : 'satu' },

{ 'pertengahan' : 'mz-004' , 'nama_m' : 'ABC' , 'm_city' : 'delhi' , 'm_status' : 'keberuntungan' }

]



# buat kerangka data pasar dari data di atas

market_df = linuxhint_spark_app.createDataFrame(pasar)

# Data pasar aktual

market_df.show()

# tulis.csv()

pasar_df.menyatu( 1 ).write.csv( 'detail_pasar' )

Keluaran:

Mari kita periksa file:

Buka file terakhir untuk melihat catatan.

Kesimpulan

Kami mempelajari empat skenario berbeda yang mengonversi PySpark DataFrame ke CSV dengan contoh dengan mempertimbangkan parameter yang berbeda. Saat Anda bekerja dengan PySpark DataFrame, Anda memiliki dua opsi untuk mengonversi DataFrame ini ke CSV: satu cara menggunakan metode write() dan cara lainnya menggunakan metode to_csv() dengan mengonversi ke Pandas DataFrame. Jika Anda bekerja dengan PySpark Pandas DataFrame, Anda juga dapat menggunakan to_csv() dan tofile() dengan mengonversi ke larik NumPy.