PySpark Baca CSV()

Pyspark Baca Csv



Membangun PySpark DataFrame dari data CSV dimungkinkan di PySpark menggunakan fungsi read.csv() . Dalam beberapa skenario, jika Anda ingin memuat data eksternal ke dalam PySpark DataFrame, PySpark mendukung banyak format seperti JSON, CSV, dll. Dalam tutorial ini, kita akan melihat cara membaca data CSV dan memuatnya ke dalam PySpark DataFrame. Selain itu, kami akan membahas memuat beberapa file CSV dalam satu DataFrame sekaligus dengan contoh.

Pyspark.sql.DataFrameReader.csv()

Metode ini digunakan untuk membaca data dari file CSV dan menyimpannya di PySpark DataFrame. Dibutuhkan opsi saat membaca CSV ke dalam DataFrame. Kami akan membahas opsi yang berbeda dengan contoh secara rinci. Saat mengirimkan lebih dari satu file CSV, penting untuk meneruskan nama file dengan ekstensi dalam daftar yang dipisahkan oleh operator koma. Jika Anda hanya membaca satu file CSV, tidak perlu memberikan nama file dalam daftar.

Sintaksis:







File tunggal - spark_app.read.csv('file.csv', pilihan …)

Banyak file – spark_app.read.csv([‘file1.csv’,’file2.csv’,…],opsi…)



Dimungkinkan juga untuk memisahkan opsi dan nama file.



Berkas tunggal – spark_app.read.options(opsi…).csv('file.csv')





Banyak file – spark_app.read.options(opsi…).csv([‘file1.csv’,’file2.csv’,…])

Instal library PySpark sebelum menerapkan contoh berikut.



pip instal pyspark

Setelah instalasi berhasil, Anda dapat melihat output sebagai berikut:

Skenario 1: Membaca Header Berkas CSV

Mari buat file CSV bernama 'person_skill.csv' dengan 5 record yang ditunjukkan berikut ini dan muat ke dalam PySpark DataFrame:

Parameter header digunakan untuk menentukan nama kolom di PySpark DataFrame. Dibutuhkan nilai Boolean. Jika 'Benar', nama kolom sebenarnya yang ada di file CSV ditentukan dalam DataFrame, Jika tidak, c0, c1, c2… ditentukan dan nama kolom sebenarnya akan berupa baris. Cara terbaik adalah menyetel parameter header ke true.

Contoh 1: Tajuk = Benar

impor pyspark

dari pyspark.sql impor SparkSession

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

# Muat csv bernama - person_skill.csv ke dalam skill dengan label kolom dengan header

keterampilan = linuxhint_spark_app.read.csv( 'person_skill.csv' , tajuk = Benar)

# Tampilkan DataFrame

keterampilan.tunjukkan()

Keluaran:

Penjelasan:

Kita dapat melihat bahwa PySpark DataFrame dibuat dari file CSV dengan kolom dan baris tertentu.

Gunakan perintah berikut untuk memeriksa kolom:

skill.columns

Contoh 2: Tajuk = Salah

impor pyspark

dari pyspark.sql impor SparkSession

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

# Muat csv bernama - person_skill.csv ke dalam skill dengan label kolom tanpa header

keterampilan = linuxhint_spark_app.read.csv( 'person_skill.csv' , tajuk =Salah)

# Tampilkan DataFrame

keterampilan.tunjukkan()

Keluaran:

Penjelasan:

Kita dapat melihat bahwa PySpark DataFrame dibuat dari file CSV tanpa kolom yang ada.

Juga, kolom yang ada disimpan sebagai baris di PySpark DataFrame.

skill.columns

Menggunakan Read.options.csv()

Sekarang, kita membaca file CSV menggunakan metode read.options.csv(). Di sini, kita perlu meneruskan opsi seperti pembatas, tajuk, dll di opsi sebagai argumen dan nama file di csv(). Mari lewati parameter header dengan menyetelnya ke 'True'.

Skenario 1:

impor pyspark

dari pyspark.sql impor SparkSession

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

# Menggunakan read.options.csv()

keterampilan = linuxhint_spark_app.read. pilihan ( tajuk =Benar).csv( 'person_skill.csv' )

# Tampilkan DataFrame

keterampilan.tunjukkan()

Keluaran:

Skenario 2: Membaca Pemisah File CSV

Parameter pembatas mengambil karakter yang digunakan untuk memisahkan setiap bidang. Dibutuhkan koma (,) secara default. Mari gunakan file CSV yang sama yang digunakan dalam skenario pertama dan lewati koma (',') sebagai pembatas.

impor pyspark

dari pyspark.sql impor SparkSession

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

# Menggunakan read.options.csv() dengan pembatas bersama dengan header

keterampilan = linuxhint_spark_app.read. pilihan ( tajuk =Benar,pembatas= ',' ).csv( 'person_skill.csv' )

# Tampilkan DataFrame

keterampilan.tunjukkan()

Keluaran:

Membaca Banyak File

Hingga saat ini, kami telah membaca satu file CSV. Mari kita lihat cara membaca lebih dari satu file CSV. Dalam skenario ini, baris dalam banyak file ditambahkan dalam satu PySpark DataFrame. Kami hanya perlu meneruskan nama file dalam daftar di dalam metode.

Contoh:

Mari buat file CSV berikut bernama 'person_skill.csv' dan 'person_skill2.csv' dengan data berikut:


Baca dua file CSV ini dan simpan dalam satu PySpark DataFrame.

impor pyspark

dari pyspark.sql impor SparkSession

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

# Muat 2 file csv bernama - person_skill.csv dan person_skill2.csv ke dalam skill dengan label kolom dengan header

keterampilan = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ],sep= ',' , tajuk = Benar)

keterampilan.tunjukkan()

Keluaran:

Penjelasan:

CSV pertama menyimpan 6 record dan CSV kedua menyimpan 3 record. Kita dapat melihat bahwa CSV pertama dimuat ke dalam DataFrame terlebih dahulu. Kemudian, CSV kedua dimuat. Terakhir, PySpark DataFrame menyimpan 9 catatan.

Kesimpulan

Membaca CSV ke dalam PySpark DataFrame cukup sederhana dengan metode pyspark.sql.DataFrameReader.csv() . Dimungkinkan untuk meneruskan parameter tajuk dan pembatas ke metode ini untuk menentukan kolom dan formatnya. PySpark juga mendukung membaca banyak file CSV sekaligus dengan metode yang disediakan beserta opsinya. Pada artikel ini, kita telah melihat contoh dengan mempertimbangkan opsi yang berbeda. Juga, kami telah melihat dua cara untuk meneruskan opsi ke metode.