Veri Analitiğinin Evrimi: Batch’ten Gerçek Zamana

Günümüzün hızlı dijital ekonomisinde, işletmeler sadece hızlı değil, aynı zamanda gerçek zamanlı içgörüler talep ediyor. Genellikle batch işlemeye dayanan geleneksel Extract, Load, Transform (ELT) süreçleri, bu hıza ayak uydurmakta zorlanıyor. Veri göllerinin esnekliğini veri ambarlarının ACID özellikleri ve performansıyla birleştiren data lakehouse mimarisinin yükselişi, gerçek zamanlı analitik için yeni yollar açtı. SoftCrafter olarak, sağlam veri çözümleri geliştirmede uzmanız ve özellikle anlık kullanıcı geri bildirimlerinin ve operasyonel içgörülerin çok önemli olduğu e-ticaret ve web geliştirme gibi alanlarda modern işletmeler için gerçek zamanlı yeteneklerin ne kadar kritik olduğunu ilk elden gördük.

Bu makale, bir lakehouse ortamında gerçek zamanlı ELT’yi başarmak için güçlü bir kombinasyonu inceliyor: veri dönüşümü için dbt (data build tool) ve sürekli veri alımı ve işlenmesi için Spark Structured Streaming’i bir araya getirmek.

Temel Bileşenleri Anlamak: dbt ve Spark Structured Streaming

dbt: Dönüşüm Güç Merkezi

dbt, veri analistlerini ve mühendislerini SQL kullanarak verilerini ambarlarında dönüştürmeleri için güçlendirerek ELT’deki ‘T’yi devrim niteliğinde değiştirdi. Yazılım mühendisliği en iyi uygulamalarını – versiyon kontrolü, test, dokümantasyon ve modülerlik – veri dönüşümüne getiriyor. dbt ile veri modellerinizi SQL sorguları olarak tanımlarsınız ve dbt bunları derler ve yürütür, bağımlılıkları ve materialization’ları yönetir. Bu deklaratif yaklaşım, karmaşık veri pipeline’larını basitleştirir ve SoftCrafter’daki kurumsal hizmetlerimizin temel taşlarından biri olan işbirliğini teşvik eder.

Spark Structured Streaming: Gerçek Zamanlı Veri Alımı ve İşleme

Apache Spark Structured Streaming, Spark SQL motoru üzerine inşa edilmiş ölçeklenebilir ve hataya dayanıklı bir stream processing engine’dir. Akış verileri üzerinde sürekli hesaplamaları, statik veriler üzerinde batch hesaplamaları ifade ettiğiniz şekilde ifade etmenizi sağlar. Bu birleşik API, geliştirmeyi basitleştirir ve ayrı batch ve streaming codebase’lerini yönetmeyle ilişkili bilişsel yükü azaltır. Structured Streaming, çeşitli kaynaklardan (Kafka, Kinesis, dosyalar vb.) veri alabilir ve farklı sink’lere (Delta Lake, Parquet, RDBMS vb.) yazabilir, bu da onu bir lakehouse’a sürekli veri yükleme için ideal kılar.

Gerçek Zamanlı ELT Pipeline’ını Tasarlamak

dbt ve Spark Structured Streaming arasındaki sinerji, kendi güçlü yönlerinde yatmaktadır. Spark Structured Streaming, sürekli veri alımını ve başlangıç dönüşümlerini (E ve L, ve potansiyel olarak bazı hafif T) ele alarak verileri lakehouse’unuzun raw veya bronze katmanlarına yerleştirir. dbt daha sonra karmaşık, küratörlü dönüşümler (ağır T) için devreye girer, analitik için silver ve gold katmanları oluşturur. İşte kavramsal bir mimari:

  1. Veri Kaynakları: Operasyonel veritabanları, event stream’leri (Kafka), API’ler, log’lar.
  2. Veri Alımı (Spark Structured Streaming): Kaynaklardan sürekli veri okuma. Şema çıkarımı, temel temizleme işlemleri gerçekleştirme ve lakehouse’un raw/bronze katmanına (örn. Delta Lake tabloları) ekleme.
  3. Gerçek Zamanlı Dönüşümler (Spark Structured Streaming): Anlık içgörüler için, Spark Structured Streaming, bronze katman üzerinde artımlı dönüşümler gerçekleştirebilir, silver katmanda gerçek zamanlı materialized view’lar veya aggregated tablolar oluşturabilir. Bu, join’ler, aggregation’lar ve filtreleme içerebilir.
  4. Batch/Planlanmış Dönüşümler (dbt): dbt modelleri, bronze/silver katmanlarındaki verileri küratörlü gold katman tablolarına dönüştürmek için bir programa göre (örn. saatlik, günlük) çalıştırılır. Bu dönüşümler daha karmaşık olabilir, geçmiş verileri, deduplication’ı ve anlık gerçek zamanlı güncellemeler gerektirmeyen iş mantığını içerebilir. dbt ayrıca yalnızca yeni veya değişen verileri verimli bir şekilde işlemek için artımlı modelleri de yönetebilir.
  5. Data Lakehouse (Delta Lake): Tüm veri aşamaları (bronze, silver, gold) için birleşik depolama katmanı olarak işlev görür, ACID transaction’lar, şema zorlaması ve time travel yetenekleri sağlar.
  6. Analitik ve BI: Tableau, Power BI veya özel uygulamalar gibi araçlar, dashboard’lar, raporlar ve makine öğrenimi modelleri için gold katmanındaki verileri tüketir.

Entegrasyonu Uygulamak: Pratik Hususlar

Veri Alımı ve İlk İşleme için Spark Structured Streaming

Spark Structured Streaming kullanarak bir Delta Lake tablosuna veri alma basit bir örneği ele alalım:

from pyspark.sql import SparkSessionfrom pyspark.sql.functions import current_timestamspark = SparkSession.builder.appName("StreamToDelta").getOrCreate()# Read from a Kafka topickf_df = spark.readStream 
    .format("kafka") 
    .option("kafka.bootstrap.servers", "localhost:9092") 
    .option("subscribe", "raw_events") 
    .load()# Deserialize value and add a processing timestampparsed_df = kf_df.selectExpr("CAST(value AS STRING)", "timestamp") 
    .withColumn("processing_time", current_timestamp())# Write to Delta Lake table in append modequery = parsed_df.writeStream 
    .format("delta") 
    .outputMode("append") 
    .option("checkpointLocation", "/tmp/delta/checkpoint/raw_events") 
    .trigger(processingTime="10 seconds") 
    .toTable("raw_events_delta")query.awaitTermination()

Küratörlü Dönüşümler için dbt

Veriler raw_events_delta tablosuna ulaştığında, dbt onu dönüştürmek için modeller tanımlayabilir. İşte raw event’leri seçen ve temizleyen basit bir dbt modeli (models/silver/stg_events.sql):

SELECT
    CAST(value AS JSON) as event_payload,
    timestamp as event_timestamp,
    processing_time
FROM {{ source('my_lakehouse', 'raw_events_delta') }}
WHERE value IS NOT NULL

Ve event’leri toplayan sonraki bir gold katman modeli (models/gold/agg_daily_events.sql):

-- models/gold/agg_daily_events.sql
{{ config(
    materialized='incremental',
    unique_key='event_date'
) }}

SELECT
    CAST(event_timestamp AS DATE) as event_date,
    COUNT(*) as total_events
FROM {{ ref('stg_events') }}
{% if is_incremental() %}
  WHERE event_timestamp > (SELECT MAX(event_date) FROM {{ this }})
{% endif %}
GROUP BY 1
ORDER BY 1

Bu artımlı dbt modeli, sürekli streaming alımını tamamlayarak, yalnızca son çalıştırmadan bu yana yeni verileri verimli bir şekilde işler. dbt çalıştırmalarının orkestrasyonu, analitik katmanlarınıza zamanında güncellemeler sağlamak için Apache Airflow veya Prefect gibi araçlar kullanılarak yapılabilir. SoftCrafter, kapsamlı yazılım hizmetleri sunmak için genellikle bu orkestrasyon araçlarından yararlanır.

Bu Entegre Yaklaşımın Faydaları

  • Gerçek Zamanlı İçgörüler: Verileri sürekli işleyerek ve raporlama için kullanılabilir hale getirerek gerçek zamana yakın analitik elde edin.
  • Veri Kalitesi ve Yönetişimi: dbt’nin test ve dokümantasyon yetenekleri, Delta Lake’in şema zorlamasıyla birleşerek yüksek kaliteli, güvenilir veri sağlar.
  • Ölçeklenebilirlik: Hem Spark Structured Streaming hem de dbt, Spark’ın dağıtılmış işlem gücünden yararlanarak büyük veri hacimlerini işlemek için yatay ölçeklenebilirlik sağlar.
  • Geliştirici Verimliliği: SQL merkezli dbt ve Spark’taki birleşik streaming/batch API’leri karmaşıklığı azaltır ve geliştirme döngülerini hızlandırır.
  • Maliyet Verimliliği: Verileri artımlı olarak işleyerek ve açık kaynak teknolojileri kullanarak işletmeler altyapı maliyetlerini optimize edebilir.
  • Geleceğe Hazırlık: Bu mimari, gelişen veri kaynaklarına ve analitik gereksinimlerine uyarlanabilir, gelecekteki büyüme için sağlam bir temel sağlar.

SoftCrafter olarak, müşterilerimizi iş değeri sağlayan son teknoloji çözümlerle güçlendirmeye inanıyoruz. dbt ve Spark Structured Streaming’i bir lakehouse mimarisine entegre etmek, modern veri mühendisliğinin gerçek zamanlı operasyonel dashboard’lardan gelişmiş makine öğrenimi modellerine kadar somut faydalar sağlayabileceğinin önemli bir örneğidir. Veri yeteneklerinizi geliştirmek istiyorsanız, bizimle iletişime geçmekten çekinmeyin.

#dbt #Spark #StructuredStreaming #DataLakehouse #ELT #RealtimeAnalytics #DataEngineering #DeltaLake

Kategori:

Veri Mühendisliği,

Son güncelleme: Ekim 25, 2026