Dosya Formatından Apache Parquet Formatına Dönüştürme

İbrahim Baran
Bankalararası Kart Merkezi
3 min readJun 11, 2019

Apache Parquet Nedir?

Apache Parquet, aşağıdaki özelliklere sahip olan ve sütun şeklinde kullanılabilen bir depolama formatıdır.

  • CSV gibi satır tabanlı dosyalara kıyasla, verilerin verimli bir şekilde sütun halinde depolanması için tasarlanmıştır.
  • Çok verimli sıkıştırma işlemi ve şemaları şifrelemeyi desteklemek için tasarlamıştır.
  • Amazon Athena, Redshift Spectrum ve Google Cloud Dataproc gibi sunucusuz teknolojilerle veri sorgulama maliyetlerinin düşürülmesine ve verilerin sorgulanmasında etkinliğin artırılmasına izin verir.

Parquet ile CSV Karşılaştırması

CSV verilerini Parquet’nin sütun formatına dönüştürüp, ardından sıkıştırarak ve bölümleyerek (partition) tasarruf ve daha iyi performans elde edebiliriz. Aşağıdaki tablo, CSV ve Parquet formatlarının karşılaştırmalı maliyetlerini içermektedir.

Python ile CVS ‘den Parquet Formatına Dönüştürme

Aşağıdaki Python kodu ile ilgili kütüphaneler import edilir ve yeni bir SparkSession yaratılır. Spark ile ilgili parametreler, kodun çalışacağı makinenin özellikleri ile ilgilidir. Bu nedenle siz de bu kodu çalıştırmak isterseniz, bu parametreleri çalıştıracağınız makinenin özelliklerine göre güncellemeniz gerekir.

Oluşturacağımız Parquet dosyasının veri desenini belirlemek için aşağıdaki gibi StructType komutunu kullanıyoruz.

Okuyacağımız dosyanın makine üzerinde bulunduğu dizin parametre olarak verilir. Tab ayıracı, başlık olup olmadığı bilgisi, kolon tipi uyuşmadığı durumlarda nasıl davranış sergileyeceği bilgileri parametre olarak aşağıdaki gibi verilmiştir.

Oluşturacağımız Parquet dosyasının hangi dizine yazılacağı ve hangi alana göre bölümleneceği (partition) bilgisi parametre olarak verilir. Partition yaratmak zorunlu değil, ancak oluşturacağımız dosya bu örnekte büyük olduğu için ve bu dosyanın yönetilebilmesinin kolay olması için partition yaratılması daha faydalı olacaktır. Aşağıdaki gibi PURCHASE_DATE alanına göre partition yaratılarak Parquet formatına dönüştürme işlemi yapılır.

Parquet dosyası oluşturduktan sonra okuma işlemini read komutu ile yapabiliyoruz. İlgili kayıt sayısı CSV dosyasındaki sayı ile aynı ise sorunsuz bir şekilde Parquet formatında dosya oluşturma işlemini tamamlamış oluyoruz. Daha detaylı kontroller için Parquet formatındaki dosyaya SQL sorgusu ile erişip gerekli kontrollerimizi tamamlayabiliriz.

Kaynak :

https://dzone.com/articles/how-to-be-a-hero-with-powerful-parquet-google-and

--

--