Spark’ta Veri Çarpıklığı: Belirtiler, Teşhis ve Çözüm Yolları
Bir Spark işinin yüzde doksanı dakikalar içinde biterken son birkaç görevin saatlerce sürmesi, neredeyse her zaman veri çarpıklığına işaret eder.
Belirtiler
Spark UI’da aynı aşamadaki görevlerin süre ve okunan veri miktarı arasında büyük farklar görürsünüz. Genellikle birkaç anahtar değer (ör. boş müşteri kimliği veya çok büyük bir mağaza) verinin orantısız bir kısmını taşır.
Teşhis
Join ve groupBy anahtarlarının dağılımını basit bir sayım sorgusuyla inceleyin. İlk birkaç anahtarın toplam satırların anlamlı bir yüzdesini oluşturduğunu görüyorsanız sorun kaynağını bulmuşsunuzdur.
Çözüm seçenekleri
Uyarlanabilir sorgu yürütmeyi (AQE) ve çarpık join optimizasyonunu etkinleştirin; çoğu durumda bu tek başına yeterlidir. Küçük tablolar için broadcast join kullanın. Kalıcı çarpıklıkta sıcak anahtarlara rastgele bir ek (salting) ekleyerek yükü dağıtın.
Kalıcı iyileştirme
Çarpıklığın kaynağı çoğu zaman veri kalitesidir. Boş veya varsayılan anahtarları kaynakta temizlemek, performans ayarından daha kalıcı bir çözüm sağlar.