PySpark Baca CSV()

Pyspark Baca Csv



Membina PySpark DataFrame daripada data CSV boleh dilakukan dalam PySpark menggunakan fungsi read.csv(). Dalam sesetengah senario, jika anda ingin memuatkan data luaran ke dalam PySpark DataFrame, PySpark menyokong banyak format seperti JSON, CSV, dll. Dalam tutorial ini, kita akan melihat cara membaca data CSV dan memuatkannya ke dalam PySpark DataFrame. Selain itu, kami akan membincangkan memuatkan berbilang fail CSV dalam satu DataFrame pada satu masa dengan contoh.

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 pyspark

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

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

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

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

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