Pyspark.sql.DataFrameReader.csv()
Kaedah ini digunakan untuk membaca data daripada fail CSV dan menyimpannya dalam PySpark DataFrame. Ia mengambil pilihan semasa membaca CSV ke dalam DataFrame. Kami akan membincangkan pilihan yang berbeza dengan contoh secara terperinci. Semasa menghantar lebih daripada satu fail CSV, adalah penting untuk menghantar nama fail dengan sambungan dalam senarai yang dipisahkan oleh pengendali koma. Jika anda hanya membaca satu fail CSV, tidak perlu memberikan nama fail dalam senarai.
Sintaks:
Fail tunggal - spark_app.read.csv('file.csv', pilihan …)
Berbilang fail – spark_app.read.csv([‘file1.csv’,’file2.csv’,…],pilihan…)
Anda juga boleh memisahkan pilihan dan nama fail.
Fail tunggal – spark_app.read.options(options…).csv(‘file.csv’)
Berbilang fail – spark_app.read.options(options…).csv([‘file1.csv’,’file2.csv’,…])
Pasang perpustakaan PySpark sebelum melaksanakan contoh berikut.
pip pasang pyspark
Selepas pemasangan berjaya, anda boleh melihat output seperti berikut:
Senario 1: Membaca Pengepala Fail CSV
Mari buat fail CSV bernama 'person_skill.csv' dengan 5 rekod yang ditunjukkan dalam perkara berikut dan muatkannya ke dalam PySpark DataFrame:
Parameter pengepala digunakan untuk menentukan nama lajur dalam PySpark DataFrame. Ia memerlukan nilai Boolean. Jika ia 'Benar', nama lajur sebenar yang wujud dalam fail CSV ditentukan dalam DataFrame, Jika tidak, c0, c1, c2… ditentukan dan nama lajur sebenar akan menjadi satu baris. Adalah lebih baik untuk menetapkan parameter pengepala kepada benar.
Contoh 1: Pengepala = Benar
import pysparkdaripada pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()
# Muatkan csv bernama - person_skill.csv ke dalam kemahiran dengan label lajur dengan pengepala
kemahiran = linuxhint_spark_app.read.csv( 'person_skill.csv' , kepala =Benar)
# Paparkan DataFrame
kemahiran.tunjukkan()
Pengeluaran:
Penjelasan:
Kita dapat melihat bahawa PySpark DataFrame dicipta daripada fail CSV dengan lajur dan baris tertentu.
Gunakan arahan berikut untuk menyemak lajur:
kemahiran.lajur
Contoh 2: Pengepala = Salah
import pysparkdaripada pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()
# Muatkan csv bernama - person_skill.csv ke dalam kemahiran dengan label lajur tanpa pengepala
kemahiran = linuxhint_spark_app.read.csv( 'person_skill.csv' , kepala =Salah)
# Paparkan DataFrame
kemahiran.tunjukkan()
Pengeluaran:
Penjelasan:
Kita dapat melihat bahawa PySpark DataFrame dicipta daripada fail CSV tanpa lajur sedia ada.
Juga, lajur sedia ada disimpan sebagai baris dalam PySpark DataFrame.
kemahiran.lajur
Menggunakan Read.options.csv()
Sekarang, kami membaca fail CSV menggunakan kaedah read.options.csv(). Di sini, kita perlu lulus pilihan seperti pembatas, pengepala, dll dalam pilihan sebagai argumen dan nama fail dalam csv(). Mari lulus parameter pengepala dengan menetapkannya kepada 'Benar'.
Senario 1:
import pysparkdaripada pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()
# Menggunakan read.options.csv()
kemahiran = linuxhint_spark_app.read. pilihan ( kepala =Benar).csv( 'person_skill.csv' )
# Paparkan DataFrame
kemahiran.tunjukkan()
Pengeluaran:
Senario 2: Membaca Pembatas Fail CSV
Parameter pembatas mengambil aksara yang digunakan untuk memisahkan setiap medan. Ia memerlukan koma (,) secara lalai. Mari gunakan fail CSV yang sama yang digunakan dalam senario pertama dan hantar koma (‘,’) sebagai pembatas.
import pysparkdaripada pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()
# Menggunakan read.options.csv() dengan pembatas bersama dengan pengepala
kemahiran = linuxhint_spark_app.read. pilihan ( kepala =Benar, pembatas= ',' ).csv( 'person_skill.csv' )
# Paparkan DataFrame
kemahiran.tunjukkan()
Pengeluaran:
Membaca Berbilang Fail
Sehingga kini, kami telah membaca satu fail CSV. Mari lihat cara membaca lebih daripada satu fail CSV. Dalam senario ini, baris dalam berbilang fail dilampirkan dalam satu PySpark DataFrame. Kami hanya perlu menghantar nama fail dalam senarai dalam kaedah.
Contoh:
Mari kita miliki fail CSV berikut bernama 'person_skill.csv' dan 'person_skill2.csv' dengan data berikut:
Baca dua fail CSV ini dan simpannya dalam satu PySpark DataFrame.
import pysparkdaripada pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Petunjuk Linux' ).getOrCreate()
# Muatkan 2 fail csv bernama - person_skill.csv dan person_skill2.csv ke dalam kemahiran dengan label lajur dengan pengepala
kemahiran = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ],sep= ',' , kepala =Benar)
kemahiran.tunjukkan()
Pengeluaran:
Penjelasan:
CSV pertama memegang 6 rekod dan CSV kedua memegang 3 rekod. Kita dapat melihat bahawa CSV pertama dimuatkan ke dalam DataFrame terlebih dahulu. Kemudian, CSV kedua dimuatkan. Akhirnya, PySpark DataFrame memegang 9 rekod.
Kesimpulan
Membaca CSV ke dalam PySpark DataFrame agak mudah dengan kaedah pyspark.sql.DataFrameReader.csv(). Anda boleh menghantar parameter pengepala dan pembatas kepada kaedah ini untuk menentukan lajur dan format. PySpark juga menyokong membaca berbilang fail CSV pada satu masa dengan kaedah yang disediakan bersama dengan pilihannya. Dalam artikel ini, kami telah melihat contoh dengan mempertimbangkan pilihan yang berbeza. Selain itu, kami telah melihat dua cara untuk menghantar pilihan kepada kaedah tersebut.