PySpark CSV'yi Oku()

Pyspark Csv Yi Oku



PySpark DataFrame'i CSV verilerinden oluşturmak, PySpark'ta read.csv() işlevi kullanılarak mümkündür. Bazı senaryolarda, harici verileri PySpark DataFrame'e yüklemek isterseniz PySpark, JSON, CSV vb. birçok formatı destekler. Bu eğitimde, CSV verilerini nasıl okuyacağımızı ve PySpark DataFrame'e nasıl yükleyeceğimizi göreceğiz. Ayrıca, tek bir DataFrame'e aynı anda birden fazla CSV dosyası yüklemeyi örneklerle tartışacağız.

Pyspark.sql.DataFrameReader.csv()

Bu yöntem, CSV dosyalarından verileri okumak ve bunları PySpark DataFrame'de depolamak için kullanılır. DataFrame'e CSV okurken seçenekleri alır. Farklı seçenekleri örneklerle ayrıntılı olarak tartışacağız. Birden fazla CSV dosyası geçirilirken uzantılı dosya adlarının virgül operatörü ile ayrılmış bir liste halinde iletilmesi önemlidir. Yalnızca bir CSV dosyası okuyorsanız, dosya adını bir listede vermenize gerek yoktur.

Sözdizimi:







Tek dosya - spark_app.read.csv('file.csv', seçenekler …)

Birden fazla dosya – spark_app.read.csv(['dosya1.csv','dosya2.csv',…],seçenekler…)



Seçenekleri ve dosya adlarını ayırmak da mümkün olabilir.



Tek dosya – spark_app.read.options(seçenekler…).csv('dosya.csv')





Birden fazla dosya – spark_app.read.options(seçenekler…).csv(['dosya1.csv','dosya2.csv',…])

Aşağıdaki örnekleri uygulamadan önce PySpark kitaplığını kurun.



pip kurulumu pyspark

Başarılı kurulumdan sonra çıktıyı aşağıdaki gibi görebilirsiniz:

Senaryo 1: CSV Dosya Başlığını Okuma

Aşağıda gösterilen 5 kayıt ile “person_skill.csv” adında bir CSV dosyası oluşturalım ve PySpark DataFrame içine yükleyelim:

Başlık parametresi, PySpark DataFrame'deki sütun adlarını belirtmek için kullanılır. Boole değeri alır. 'True' ise DataFrame'de CSV dosyasında var olan gerçek sütun adları belirtilir, Aksi takdirde c0, c1, c2… belirtilir ve gerçek sütun adları satır olur. Başlık parametresini true olarak ayarlamak en iyi yöntemdir.

Örnek 1: Başlık = True

pyspark'ı içe aktar

pyspark.sql'den SparkSession'ı içe aktarın

linuxhint_spark_app = SparkSession.builder.appName( 'Linux İpucu' ).getOrCreate()

# - person_skill.csv adlı csv'yi üstbilgili sütun etiketli becerilere yükleyin

beceriler = linuxhint_spark_app.read.csv( 'person_skill.csv' , başlık =Doğru)

# DataFrame'i görüntüleyin

beceriler.göster()

Çıktı:

Açıklama:

PySpark DataFrame'in CSV dosyasından belirtilen sütun ve satırlarla oluşturulduğunu görebiliriz.

Sütunları kontrol etmek için aşağıdaki komutu kullanın:

beceriler.sütunlar

Örnek 2: Başlık = Yanlış

pyspark'ı içe aktar

pyspark.sql'den SparkSession'ı içe aktarın

linuxhint_spark_app = SparkSession.builder.appName( 'Linux İpucu' ).getOrCreate()

# - person_skill.csv adlı csv'yi başlıksız sütun etiketleriyle becerilere yükleyin

beceriler = linuxhint_spark_app.read.csv( 'person_skill.csv' , başlık =Yanlış)

# DataFrame'i görüntüleyin

beceriler.göster()

Çıktı:

Açıklama:

PySpark DataFrame'in mevcut sütunlar olmadan CSV dosyasından oluşturulduğunu görebiliriz.

Ayrıca, mevcut sütunlar PySpark DataFrame'de satırlar halinde saklanır.

beceriler.sütunlar

Read.options.csv() işlevini kullanma

Şimdi read.options.csv() yöntemini kullanarak CSV dosyasını okuyoruz. Burada seçeneklerdeki ayraç, başlık vb. seçenekleri argüman olarak ve dosya adını csv() içine geçirmemiz gerekiyor. Header parametresini “True” yaparak geçelim.

Senaryo 1:

pyspark'ı içe aktar

pyspark.sql'den SparkSession'ı içe aktarın

linuxhint_spark_app = SparkSession.builder.appName( 'Linux İpucu' ).getOrCreate()

# read.options.csv()'yi kullanma

beceriler = linuxhint_spark_app.read. seçenekler ( başlık =Doğru).csv( 'person_skill.csv' )

# DataFrame'i görüntüleyin

beceriler.göster()

Çıktı:

Senaryo 2: CSV Dosya Sınırlayıcısını Okuma

Ayırıcı parametresi, her alanı ayırmak için kullanılan karakteri alır. Varsayılan olarak virgül (,) alır. İlk senaryoda kullanılan aynı CSV dosyasını kullanalım ve sınırlayıcı olarak virgül (',') geçelim.

pyspark'ı içe aktar

pyspark.sql'den SparkSession'ı içe aktarın

linuxhint_spark_app = SparkSession.builder.appName( 'Linux İpucu' ).getOrCreate()

# Read.options.csv()'yi başlıkla birlikte sınırlayıcıyla kullanma

beceriler = linuxhint_spark_app.read. seçenekler ( başlık =Doğru,sınırlayıcı= ',' ).csv( 'person_skill.csv' )

# DataFrame'i görüntüleyin

beceriler.göster()

Çıktı:

Birden Fazla Dosya Okuma

Şimdiye kadar tek bir CSV dosyası okuyorduk. Birden fazla CSV dosyasını nasıl okuyacağınızı görelim. Bu senaryoda, birden çok dosyadaki satırlar tek bir PySpark DataFrame'e eklenir. Sadece dosya isimlerini metot içerisinde bir listeye geçirmemiz gerekiyor.

Örnek:

Aşağıdaki verilerle “person_skill.csv” ve “person_skill2.csv” adlı aşağıdaki CSV dosyalarına sahip olalım:


Bu iki CSV dosyasını okuyun ve bunları tek bir PySpark DataFrame'de saklayın.

pyspark'ı içe aktar

pyspark.sql'den SparkSession'ı içe aktarın

linuxhint_spark_app = SparkSession.builder.appName( 'Linux İpucu' ).getOrCreate()

# - person_skill.csv ve person_skill2.csv adlı 2 csv dosyasını, başlıklı sütun etiketleriyle becerilere yükleyin

beceriler = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ],böl= ',' , başlık =Doğru)

beceriler.göster()

Çıktı:

Açıklama:

İlk CSV 6 kayıt tutar ve ikinci CSV 3 kayıt tutar. İlk CSV'nin önce DataFrame'e yüklendiğini görebiliriz. Ardından, ikinci CSV yüklenir. Son olarak, PySpark DataFrame 9 kayıt tutar.

Çözüm

CSV'yi PySpark DataFrame'e okumak, pyspark.sql.DataFrameReader.csv() yöntemiyle oldukça basittir. Sütunları ve biçimi belirtmek için başlık ve sınırlayıcı parametrelerini bu yönteme geçirmek mümkün olabilir. PySpark, seçenekleriyle birlikte sağlanan yöntemlerle aynı anda birden çok CSV dosyasını okumayı da destekler. Bu yazımızda farklı seçenekleri göz önünde bulundurarak örneklerini gördük. Ayrıca, seçenekleri metoda aktarmanın iki yolunu gördük.