Apache Spark ile AWS RDS Veritabanına Bastion Host Üzerinden SSH Tunnel Kurarak Bağlanmak

Giriş Veri mühendisliği projelerinde, özellikle kurumsal ortamlarda canlı veriye doğrudan erişim yerine bastion host gibi geçit sunucuları üzerinden güvenli bağlantılar tercih edilir. Bu yazıda, bir SSH Tunnel yardımıyla lokalde çalışan Apache Spark ile AWS RDS veritabanına nasıl erişebileceğinizi adım adım göstereceğim. Bastion Host Nedir? Bastion host, bir diz üstü bilgisayarınız veya internete açık bir cihaz […]
Spark ML Custom Transformer Yazma

Bu yazımızda Spark ML Custom Transformer yazacağız. Spark’ın makine öğrenimi kütüphanesi (MLlib), veri bilimcilere ve makine öğrenimi mühendislerine zengin bir araç seti sunuyor. Model geliştirme çalışmalarında bilhassa özellik mühendisliği (feature engineering) aşamasında çok yoğun veri ön hazırlık süreçleri oluyor. Bu çalışmalarda PySpark’ın pyspark.ml.feature kütüphanesi, makine öğrenimi modelleriniz için ham verileri anlamlı ve kullanışlı özelliklere (feature) […]
Apache Spark, Minio, Nessie Catalog, Iceberg ve Docker ile Lakehouse Örneği

Veri ambarı (data warehouse) ile veri gölünün (data lake) en iyi yönlerini birleştirerek bizlere ilişkisel veri tabanı konforunu büyük veri üzerinde sunan lakehouse çözümleri gün geçtikçe hayatımızdaki yerini alıyor. Bugün burada tamamen açık kaynak kodlu bileşenleri kullanarak docker üzerinde basit bir lakehouse örneği yapacağız. 1. Altyapıyı Oluşturan Bileşenler 1.1. Nessie Nessie veri gölleri için transactional […]
Delta Lake Temizliği ile Depolama Alanı Optimizasyonu

Herkese merhaba! Gittikçe artan veri hacimleriyle birlikte, verilerin depolanması, yönetilmesi konusundaki güçlüklerin de benzer oranda arttığını biliyoruz. Açık kaynaklı bir depolama katmanı olan olan Delta Lake kullanıyorsanız, bir Delta tablosunda yapılan tüm değişikliklerin izlenmesi için kullanılan log dosyaları ve verilerin kaydedildiği parquet uzantılı dosyaların zamanla arttığını gözlemlemişsinizdir. Bu dosyalar zamanla ciddi boyutlara ulaşabilir, sorgu performansını […]
Apache Spark’ı Hangi Ortamlarda Kullanabiliriz?

Apache Spark büyük veri ve analitik dünyada çok popüler bir araç. Spark’ı bir çok farklı amaçla kullanabileceğimiz gibi bir çok farklı ortamda çalıştırabiliriz. Bu yazımızda Spark’ı hangi ortamlarda çalıştırıp kullanabiliriz onlardan bahsedeceğiz. Lokal Java yüklü herhangi bir bilgisayar veya sunucuda Spark binary dosyalarını indirip lokal modda Spark’ı kullanabilirsiniz. Geliştirme yapmak ve öğrenmek için ideal bir […]
Apache Spark, Apache Airflow, Delta Lake ve MinIO ile ETL Çalışması

Veri odaklı kuruluşlarda, çeşitli ham ve karmaşık verilerden içgörü elde etmek için gerektiğinde büyük miktarda verinin düzenlenmesi, basitleştirilmesi veya zenginleştirilmesi gerekir. ETL (Çıkart, Dönüştür, Yükle) konsepti, büyük ölçekli verileri parçalara ayırır ve veri bilimcilerin/analistlerin verilere erişmesini, verileri analiz etmesini ve bunları iş zekasına dönüştürmesini kolaylaştırır. Aynı zamanda ETL, belirli bir veri hattı (pipeline) türünü ifade […]
Spark SQL Window Functions

Window functions SQL dünyasında yaygın olarak bilinen fonksiyonlar. SQL’de kullandığımız bir çok fonksiyonu Spark ile de kullanabiliyoruz. Bu yazımızda Spark Scala ve SQL söz dizimleriyle window functions örnekleri yapacağız. Window functions nedir, ne işe yarar? Window fonksiyonlar, window olarak adlandırılan bir satır grubu üzerinde çalışır ve satır grubuna dayalı olarak her satır için bir dönüş […]
Spark on Kubernetes

17 Ekim 2024’de güncellendi. Merhabalar. Bu yazımızda bir Spark uygulamasını Kubernetes cluster (Minikube) üzerinde çalıştıracağız, yaygın adıyla Spark on Kubernetes. Bildiğimiz gibi Spark 2.3 sürümüne kadar sadece 3 cluster yöneticisi vardı: Hadoop YARN, Apache Mesos ve Spark Standalone. Sürüm 2.3 ile beraber Kubernetes de bunların arasına katıldı. Şimdiye kadar Spark kullanımında hakim cluster yöneticisi YARN […]
Apache Spark AWS S3 Veri Kaynağı

Merhabalar. Bu yazımızda Apache Spark AWS S3 entegrasyonu yapacağız. Bu kapsamda bir Spark dataframe’i AWS S3’e nasıl yazacağımızı ve S3’den Spark ile nasıl veri okuyacağımızı öğreneceğiz. Bu işi lokal makinemizdeki Spark ile yapacağız. Peki bunun yazı haline gelecek neyi var diye sorarsanız, ben de “Biraz gıcık bir iş, ben çektim siz çekmeyin” derim. Aslında birkaç […]
Spark ve Delta Lake ile Büyük Veri Slowly Changing Dimension Type2

Bu yazımızda veri ambarı dünyasında boyut (dimension) tablolarında sıklıkla kullanılan bir güncelleme yöntemi olan slowly changing dimension örneğini Apache Spark ve Delta Lake ile yapacağız. Veri ambarında gerçekleşen işlemler ve bu işlemlere ait tanım bilgileri farklı tablolarda tutulur. Hepimiz e-ticaret sitelerinden alışveriş yapıyoruz. Örneğin bir telefon kılıfı aldık. Bu telefon kılıfı bir üründür ve tanımı […]
Spark İşini Cep Telefonundan Başlatmak: Apache Livy Server

Başlık çarpıcı geldi değil mi? İnanmazsınız ancak doğru. Spark işlerini genelde client kütüphanelerinin kurulu olduğu makinelerden, yani Spark’ın Hadoop’un nerede olduğundan haberdar ve konfigürasyonları yapılmış makinelerden, başlatırız. Bu durum bizim spark işini başlatma (spark-submit) konusunda client kütüphanelerine bağımlı kılar. İşte bu kısıttan kurtulmak için “Spark işlerini her yerden başlat (Submit Jobs from Anywhere)” sloganıyla bir […]
Spark Structured Streaming: Birden Fazla Kafka Topic’e Produce Etmek

Merhabalar. Apache Spark Structured Streaming yaygın kullanılan akan veri işleme platformlarından birisi. Elbette akan verinin işlendiği bir ekosistemde Apache Kafka da bir şekilde yerini alıyor. Spark+Kafka bu tür tasarımlar için iyi bir ikili. Bu yazımızda Spark Structured Streaming ile işlenen bir verinin üretilen çıktıya bağlı olarak birden fazla topic’e gönderimine dair bir örnek yapacağız. […]
Apache Spark’ın Çalışma Mimarisi

Herkese merhabalar, önceki yazımda Apache Spark’a giriş yapmıştık. Bu sefer daha derinliklere inip Apache Spark’ın çalışma mimarisine ve cluster moduna göz atacağız. 1. Spark’ın Cluster Moduna Bakış 1.1. Cluster manager Spark Cluster’ı bir çok cluster manager (cluster kaynak yöneticisi) ile birlikte çalışabilmektedir. Standalone Spark’ın kendine ait cluster yöneticisidir, varsayılan olarak gelir. Apache Spark Hadoop ve […]
Apache Spark’a Giriş

Verinin her geçen gün katlanarak büyüdüğü günümüz dünyasında o veriyi işleyebilmenin ve veriden anlamlı çıkarımlarda bulunabilmenin önemi de katlanarak artmaktadır. Ancak terabaytlarca ve hatta petabaytlarca verimizin olduğu ve içinde ilişkisel veritabanlarının, NoSQL’lerin ve text, CSV ve JSON, parquet gibi yarı yapısal ve yapısal olmayan verilerin bulunduğu bir ekosistemde klasik yöntemlerle analiz yapmak çok zordur. İşte […]
Apache Spark ile LightGBM Kullanarak Sınıflandırma Yapmak

Merhabalar. LightGBM’in ününü duymuşsunuzdur. Ancak bunu Spark ile kullanmak istediğinizde maalesef bu algoritma Spark ML’de bulunmuyor. Bu yazımızda LightGBM’i Spark içinde nasıl kullanacağımızı PySpark ile uygulamalı olarak göreceğiz. Bildiğimiz gibi Apache Spark büyük veri dünyasında makine öğrenmesi çalışmalarının vazgeçilmez bir aracı. Küçük veri dünyasında scikit-learn ile yaptığımız işleri büyük veri tarafında genelde Spark ile yaparız. […]
Pratik Bilgiler ve Komutlar: Apache Spark

Apache Spark ile zamanla edindiğim ipuçları ve pratik bilgileri diğer pratik bilgiler ve komutlar yazı dizilerinde olduğu gibi sizlerle paylaşacağım. Faydalı olmasını umuyorum. Spark RDD[String] nasıl dataframe yapılır? Rdd’yi Dataframe’e Dönüştürmek Spark Dataframe Vektör tipini Array tipine çevirmek Pyspark ile Excel’e yazmak Spark ile otomatik olarak sütun seçmek (Scala) spark-shell’i başlatırken konfigürasyonları nasıl ayarlarım? PySpark […]
Spark ile Cassandra’dan Veri Okumak

Merhabalar, Spark ve Cassandra büyük veri dünyasının önde gelen 2 popüler aracı. Apache Cassandra NoSQL veri tabanlarının önde gelen isimlerinden birisi. Adem-i merkeziyetçi yapısıyla (no master-slave) ve yüksek yazma performansıyla dikkatleri üzerine çekiyor. Apache Spark ise bildiğimiz gibi büyük veri işleme motoru/çatısı. Spark ile çok geniş yelpazede veri manipülasyonlarını gerçekleştirebiliyoruz. Spark’ın klasik veri işleme araçlarından […]
Apache Spark Eğitimi

Apache Spark Eğitimi ile büyük verinin yarattığı fırsatları yakalamak için hazırlanın. Verinin baş döndürücü hızla çoğaldığı günümüzde onu en iyi şekilde kullanmak ve yeni çağın sunduğu bu fırsattan maksimum derecede faydalanmak için kullanılabilecek en iyi araçlardan birisi şüphesiz Apache Spark’tır. Büyük veri dünyasının öncü topluluğu Apache tarafından geliştirilen ve en güçlü açık kaynak yazılımı topluluğuna […]
Apache Spark Elasticsearch Entegrasyonu

Merhabalar. Bu yazımızda csv dosyasından okuduğumuz bir veri setini Elasticsearch’e bir index olarak yazacağız ve yazdığımız index’i Spark ile okuyacağız. 1. Giriş Apache Spark ve Elasticsearch büyük veri dünyasının en popüler araçlarından ikisi. Spark Elasticsearch ile harika işler çıkarabilirsiniz. Spark ile büyük veriyi işleyebilirken, Elasticserach ile büyük veriyi aranabilir, analiz edilebilir ve görselleştirilebilir bir şekilde […]
IntelliJ IDEA ile Apache Spark Projesini Uzak YARN Cluster Üzerinde Çalıştırmak-1/2

1. Giriş Merhabalar. Uygulama geliştirirken geliştirme(dev), test ve canlı (prod) gibi farklı farklı ortamlar kullanırız. Farklı ortamlarda çalışırken bazı ayarlamalar yapmamız gerekir. Şayet hızlı bir şekilde uygulamayı çıkarayım, geliştirme, canlı vb. uğraşmayayım diyorsanız bu yazı size göre. Bu yazıda Windows bilgisayarımızı driver olarak kullanarak IntelliJ IDEA ile canlı Hadoop Cluster üzerinde kodlarımızı geliştirme esnasında çalıştıracağız. […]