Merhabalar bu yazımda size başka bir clusterde bulunan mongo databasesinde yer alan bir collectionu spark-mongo connector yardımıyla HDFS’e bir tablo olarak yazmayı göstereceğim.

İlk olarak kavramlardan biraz bahsetmek istiyorum.

Spark:  Büyük veri ortamlarında veri işleme için open source bir hesaplama frameworkudur. Pyspark ise Python’da Apache Spark için bir arayüzdür. Python programlama dilini kullanarak uygulamalar yazmanıza imkan tanır.

MongoDB: C++ programlama dili kullanılarak 2009 yılında geliştirilen opensource bir NoSQL veritabanıdır. C++ dışında da bir çok programlama dilinin arayüzlerini kullanarak MongoDB üzerinde işlem yapabilirsiniz. Bugünkü örneğimizde Python kullanacağız.

MongoDBmizde bulunan bir collectionu (collectionu bir tablo olarak düşünebilirsiniz) kendi HDFS ortamımıza aktarmak için birden fazla yol bulunmaktadır. Bu yollardan biri de Spark üzerinden mongo-spark connectorunu kullanarak verileri Dataframe API ile okuyup yazmaktır.

Kullanılan Versiyonlar :

  • Spark 2.4.0
  • mongo-spark-connector_2.11-2.4.2.jar

 

İlk olarak Maven Repository üzerinden  mongo-spark-connector_2.11-2.4.2 isimli jarı indirip Spark Lib altında bulunan jarların olduğu dizine kaydediyoruz.

MongoDB üzerinde okul isim databasede ogrenciKayit isimli bir collectionumuz olduğunu düşünelim.

Öncelikle Spark’ın gerekli parametrelerini veriyoruz.

Copy to Clipboard

 

Memory, core ve executor değerleri temsilidir. Önemli olan son 3 parametredir. Bu parametrelerden ilki bağlanacağımız olan MongoDB’nin adresi ve bu adrese bağlanırken kullanacağımız kullanıcı adı, parola bilgilerinin yer aldığı spark.mongodb.input.uri parametresidir. İkinci parametremiz ise MongoDB üzerindeki databasemizi belirten spark.mongodb.input.database ve üçüncü parametremiz ise Mongodaki collectionumuzu belirten spark.mongodb.input.collectiondur.

Daha sonra mongo formatında okuma yapıp bir dataframeye atıyoruz.

Copy to Clipboard

Şemamızı incelemek için printSchema() fonksiyonunu kullanıyoruz.

Şemamızda 3 adet column bulunmakta. OgrenciNo, BaslangicTarihi ve BitisTarihi

ve kolonlara ait veri tiplerini, null gelebilme durumunlarını görmüş olduk.

Copy to Clipboard

 

Copy to Clipboard

 

Show() fonskiyonunu kullanarak veriye göz atıyoruz.

Copy to Clipboard

Show içerisindeki birinci parametre kaç adet kayıt görmek istediğimiz, ikinci parametre ise eğer karakter sayısı çok fazla olan bir satır veya sütununuz varsa kısaltmadan ( normalde üç nokta kullanılıyor kısaltma için) gösterebilmek için False olarak verildi.

Copy to Clipboard

 

Daha sonra bu dataframemizi bir tablo olarak kaydedebiliriz.

Copy to Clipboard

 

Tablo olarak yazmak dışında elbette ki başka alternatifler de mevcut onları da altta belirttim.

Örnek parquet ya da avro formatında hdfs’e yazmak gibi

Copy to Clipboard

Tablo olarak kaydettikten sonra kontrol amaçlı bu sefer tablomuzdan okuyup sorguladığımız zaman sonuçları aynı şekilde görüyoruz.

 

Copy to Clipboard

 

Copy to Clipboard