PySpark DataFrame'i CSV'ye dönüştürme

Pyspark Dataframe I Csv Ye Donusturme



PySpark DataFrame'i CSV'ye dönüştürmenin dört farklı senaryosuna bakalım. Doğrudan, PySpark DataFrame'i CSV'ye dönüştürmek için write.csv() yöntemini kullanıyoruz. to_csv() işlevini kullanarak PySpark Pandas DataFrame'i CSV'ye dönüştürüyoruz. NumPy dizisine dönüştürülerek de mümkün olabilir.

İçindekiler Konusu:

PySpark DataFrame ve modül kurulumu hakkında bilgi edinmek istiyorsanız, bunu gözden geçirin madde .







PySpark DataFrame'i Pandas DataFrame'e Dönüştürerek CSV'ye

to_csv(), Pandas DataFrame'i CSV'ye dönüştüren Pandas modülünde bulunan bir yöntemdir. Öncelikle, PySpark DataFrame'imizi Pandas DataFrame'e dönüştürmemiz gerekiyor. Bunu yapmak için toPandas() yöntemi kullanılır. Parametreleriyle birlikte to_csv() sözdizimini görelim.



Sözdizimi:



pandas_dataframe_obj.to_csv(yol/ 'dosya_adı.csv' , başlık ,dizin,sütunlar,mod...)
  1. CSV dosyasının dosya adını belirtmemiz gerekiyor. İndirilen CSV'yi PC'nizde belirli bir konumda saklamak istiyorsanız, dosya adıyla birlikte yolu da belirtebilirsiniz.
  2. Başlık 'Doğru' olarak ayarlanırsa sütunlar dahil edilir. Sütunlara ihtiyacınız yoksa başlığı 'Yanlış' olarak ayarlayın.
  3. İndeks “True” olarak ayarlanmışsa indeksler belirtilir. Dizinlere ihtiyacınız yoksa dizini 'Yanlış' olarak ayarlayın.
  4. Sütunlar parametresi, hangi belirli sütunların CSV dosyasına çıkarılacağını belirtebileceğimiz bir sütun adları listesi alır.
  5. Mode parametresini kullanarak kayıtları CSV'ye ekleyebiliyoruz. Ekle - “a” bunu yapmak için kullanılır.

Örnek 1: Başlık ve Dizin Parametreleriyle

3 satır ve 4 sütun içeren 'skills_df' PySpark DataFrame'i oluşturun. Bu DataFrame'i önce Pandas DataFrame'e dönüştürerek CSV'ye dönüştürün.





pyspark'ı içe aktar

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

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

# 3 satır ve 4 sütun içeren beceri verileri

beceriler =[{ 'İD' : 123 , 'kişi' : 'Bal' , 'yetenek' : 'tablo' , 'ödül' : 25000 },

{ 'İD' : 112 , 'kişi' : 'Mouni' , 'yetenek' : 'dans' , 'ödül' : 2000 },

{ 'İD' : 153 , 'kişi' : 'Tulası' , 'yetenek' : 'okuma' , 'ödül' : 1200 }

]

# yukarıdaki verilerden beceri veri çerçevesini oluşturun

beceriler_df = linuxhint_spark_app.createDataFrame(beceriler)

Skills_df.show()

# Skills_df'yi pandas DataFrame'e dönüştür

pandas_skills_df= skill_df.toPandas()

print(pandas_skills_df)

# Bu DataFrame'i başlık ve indeks ile csv'ye dönüştürün

pandas_skills_df.to_csv( 'pandas_skills1.csv' , başlık =Doğru, dizin=Doğru)

Çıktı:



PySpark DataFrame'in Pandas DataFrame'e dönüştürüldüğünü görebiliriz. Sütun adları ve dizinlerle CSV'ye dönüştürülüp dönüştürülmediğini görelim:

Örnek 2: Verileri CSV'ye Ekleyin

1 kayıt ile bir tane daha PySpark DataFrame oluşturun ve bunu ilk örneğimizin bir parçası olarak oluşturulan CSV'ye ekleyin. Mode parametresiyle birlikte başlığı 'False' olarak ayarlamamız gerektiğinden emin olun. Aksi takdirde, sütun adları da satır olarak eklenir.

pyspark'ı içe aktar

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

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

beceriler =[{ 'İD' : 90 , 'kişi' : 'Bhargav' , 'yetenek' : 'okuma' , 'ödül' : 12000 }

]

# yukarıdaki verilerden beceri veri çerçevesini oluşturun

beceriler_df = linuxhint_spark_app.createDataFrame(beceriler)

# Skills_df'yi pandas DataFrame'e dönüştür

pandas_skills_df= skill_df.toPandas()

# Bu DataFrame'i pandas_skills1.csv dosyasına ekleyin

pandas_skills_df.to_csv( 'pandas_skills1.csv' , mod= 'A' , başlık =Yanlış)

CSV Çıktısı:

CSV dosyasına yeni bir satır eklendiğini görebiliriz.

Örnek 3: Sütunlar Parametresi ile

Aynı DataFrame'e sahip olalım ve onu iki sütunlu CSV'ye dönüştürelim: 'person' ve 'prize'.

pyspark'ı içe aktar

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

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

# 3 satır ve 4 sütun içeren beceri verileri

beceriler =[{ 'İD' : 123 , 'kişi' : 'Bal' , 'yetenek' : 'tablo' , 'ödül' : 25000 },

{ 'İD' : 112 , 'kişi' : 'Mouni' , 'yetenek' : 'dans' , 'ödül' : 2000 },

{ 'İD' : 153 , 'kişi' : 'Tulası' , 'yetenek' : 'okuma' , 'ödül' : 1200 }

]

# yukarıdaki verilerden beceri veri çerçevesini oluşturun

becerileri_df = linuxhint_spark_app.createDataFrame(beceriler)

# Skills_df'yi pandas DataFrame'e dönüştür

pandas_skills_df= skill_df.toPandas()

# Bu DataFrame'i belirli sütunlarla csv'ye dönüştürün

pandas_skills_df.to_csv( 'pandas_skills2.csv' , sütunlar=[ 'kişi' , 'ödül' ])

CSV Çıktısı:

CSV dosyasında sadece “person” ve “prize” kolonlarının olduğunu görüyoruz.

PySpark Pandas DataFrame'den To_Csv() Yöntemini Kullanarak CSV'ye

to_csv(), Pandas DataFrame'i CSV'ye dönüştüren Pandas modülünde bulunan bir yöntemdir. Öncelikle, PySpark DataFrame'imizi Pandas DataFrame'e dönüştürmemiz gerekiyor. Bunu yapmak için toPandas() yöntemi kullanılır. Parametreleriyle birlikte to_csv() sözdizimini görelim:

Sözdizimi:

pyspark_pandas_dataframe_obj.to_csv(yol/ 'dosya_adı.csv' , başlık ,dizin,sütunlar,...)
  1. CSV dosyasının dosya adını belirtmemiz gerekiyor. İndirilen CSV'yi PC'nizde belirli bir konumda saklamak istiyorsanız, dosya adıyla birlikte yolu da belirtebilirsiniz.
  2. Başlık 'Doğru' olarak ayarlanırsa sütunlar dahil edilir. Sütunlara ihtiyacınız yoksa başlığı 'Yanlış' olarak ayarlayın.
  3. İndeks “True” olarak ayarlanmışsa indeksler belirtilir. Dizinlere ihtiyacınız yoksa dizini 'Yanlış' olarak ayarlayın.
  4. column parametresi, CSV dosyasına hangi belirli sütunların çıkarılacağını belirtebileceğimiz bir sütun adları listesi alır.

Örnek 1: Sütunlar Parametresi ile

3 sütunlu bir PySpark Pandas DataFrame oluşturun ve 'person' ve 'prize' sütunlarıyla to_csv() kullanarak CSV'ye dönüştürün.

pyspark'tan içe aktarma pandaları

pyspark_pandas_dataframe=pandas.DataFrame({ 'İD' :[ 90 , 78 , 90 , 57 ], 'kişi' :[ 'Bal' , 'Mouni' , 'kendisi' , 'radha' ], 'ödül' :[ 1 , 2 , 3 , 4 ]})

print(pyspark_pandas_dataframe)

# Bu DataFrame'i belirli sütunlarla csv'ye dönüştürün

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas1' , sütunlar=[ 'kişi' , 'ödül' ])

Çıktı:

PySpark Pandas DataFrame'in iki partition ile CSV'ye dönüştürüldüğünü görebiliriz. Her bölüm 2 kayıt tutar. Ayrıca, CSV'deki sütunlar yalnızca 'kişi' ve 'ödül' şeklindedir.

Bölüm Dosyası 1:

Bölüm Dosyası 2:

Örnek 2: Başlık Parametresi ile

Önceki DataFrame'i kullanın ve 'True' olarak ayarlayarak başlık parametresini belirtin.

pyspark'tan içe aktarma pandaları

pyspark_pandas_dataframe=pandas.DataFrame({ 'İD' :[ 90 , 78 , 90 , 57 ], 'kişi' :[ 'Bal' , 'Mouni' , 'kendisi' , 'radha' ], 'ödül' :[ 1 , 2 , 3 , 4 ]})

# Bu DataFrame'i başlıklı csv'ye dönüştürün.

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas2' , başlık =Doğru)

CSV Çıktısı:

PySpark Pandas DataFrame'in iki partition ile CSV'ye dönüştürüldüğünü görebiliriz. Her bölüm, sütun adlarıyla birlikte 2 kayıt tutar.

Bölüm Dosyası 1:

Bölüm Dosyası 2:

PySpark Pandas DataFrame'i NumPy Dizisine Dönüştürerek CSV'ye

Numpy dizisine dönüştürerek PySpark Pandas DataFrame'i CSV'ye dönüştürme seçeneğimiz var. to_numpy(), PySpark Pandas DataFrame'i NumPy dizisine dönüştüren PySpark Pandas modülünde bulunan bir yöntemdir.

Sözdizimi:

pyspark_pandas_dataframe_obj.to_numpy()

Herhangi bir parametre almaz.

Tofile() Yöntemini Kullanma

NumPy dizisine dönüştürdükten sonra, NumPy'yi CSV'ye dönüştürmek için tofile() yöntemini kullanabiliriz. Burada, her kaydı CSV dosyasında sütunlu yeni bir hücrede saklar.

Sözdizimi:

array_obj.to_numpy(dosya adı/yol, sep=' ')

Bir CSV'nin dosya adını veya yolunu ve bir ayırıcıyı alır.

Örnek:

3 sütun ve 4 kayıt ile PySpark Pandas DataFrame oluşturun ve önce onu bir NumPy dizisine dönüştürerek CSV'ye dönüştürün.

pyspark'tan içe aktarma pandaları

pyspark_pandas_dataframe=pandas.DataFrame({ 'İD' :[ 90 , 78 , 90 , 57 ], 'kişi' :[ 'Bal' , 'Mouni' , 'kendisi' , 'radha' ], 'ödül' :[ 1 , 2 , 3 , 4 ]})

# Yukarıdaki DataFrame'i numpy dizisine dönüştürün

dönüştürülmüş = pyspark_pandas_dataframe.to_numpy()

yazdır(dönüştürülmüş)

# tofile() kullanımı

dosyaya dönüştürüldü( 'dönüştürülmüş1.csv' , ay = ',' )

Çıktı:

[[ 90 'Bal' 1 ]

[ 78 'Mouni' 2 ]

[ 90 'kendisi' 3 ]

[ 57 'radha' 4 ]]

PySpark Pandas DataFrame'in bir NumPy dizisine (12 değer) dönüştürüldüğünü görebiliriz. CSV verilerini görebiliyorsanız, her hücre değerini yeni bir sütunda depolar.

Write.Csv() Yöntemini Kullanarak PySpark DataFrame'den CSV'ye

write.csv() yöntemi, CSV dosyasını parametre olarak kaydetmemiz gereken dosya adını/yolunu alır.

Sözdizimi:

dataframe_object.coalesce( 1 ).write.csv( 'dosya adı' )

Aslında, CSV bölümler (birden fazla) olarak kaydedilir. Bundan kurtulmak için, bölümlenmiş tüm CSV dosyalarını tek bir dosyada birleştiriyoruz. Bu senaryoda, birleştirme() işlevini kullanıyoruz. Artık PySpark DataFrame'den tüm satırları içeren yalnızca bir CSV dosyası görebiliriz.

Örnek:

4 sütuna sahip 4 kayıt içeren PySpark DataFrame'i düşünün. Bu DataFrame'i 'market_details' adlı dosyayla CSV'ye yazın.

pyspark'ı içe aktar

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

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

# 4 satır ve 4 sütunlu piyasa verileri

pazar =[{ 'orta' : 'mz-001' , 'm_name' : 'ABC' , 'm_city' : 'delhi' , 'm_state' : 'delhi' },

{ 'orta' : 'mz-002' , 'm_name' : 'XYZ' , 'm_city' : 'patna' , 'm_state' : 'şans' },

{ 'orta' : 'mz-003' , 'm_name' : 'PQR' , 'm_city' : 'Florida' , 'm_state' : 'bir' },

{ 'orta' : 'mz-004' , 'm_name' : 'ABC' , 'm_city' : 'delhi' , 'm_state' : 'şans' }

]



# yukarıdaki verilerden pazar veri çerçevesini oluşturun

market_df = linuxhint_spark_app.createDataFrame(pazar)

# Gerçek piyasa verileri

market_df.show()

# yaz.csv()

market_df.coalesce( 1 ).write.csv( 'pazar_detayları' )

Çıktı:

Dosyayı kontrol edelim:

Kayıtları görmek için son dosyayı açın.

Çözüm

PySpark DataFrame'i CSV'ye çeviren dört farklı senaryoyu farklı parametreleri göz önünde bulundurarak örneklerle öğrendik. PySpark DataFrame ile çalışırken, bu DataFrame'i CSV'ye dönüştürmek için iki seçeneğiniz vardır: bunlardan biri write() yöntemini kullanmak, diğeri ise Pandas DataFrame'e dönüştürerek to_csv() yöntemini kullanmaktır. PySpark Pandas DataFrame ile çalışıyorsanız, NumPy dizisine dönüştürerek to_csv() ve tofile() öğelerini de kullanabilirsiniz.