Tanımla ve Kullan!

PySpark'e Giriş

Benjamin Schmidt

Data Engineer

Tekrarlanabilir Görevler için UDF'ler

UDF (Kullanıcı Tanımlı Fonksiyon): PySpark veri çerçeveleri ile veri üzerinde çalışmak için özel fonksiyon

UDF'lerin Avantajları:

  • Yaygın görevleri yeniden kullanma ve tekrarlama
  • Spark ile doğrudan kaydedilebilir ve paylaşılabilir
  • PySpark DataFrames (küçük veri kümeleri için)
  • pandas UDF'ler (büyük veri kümeleri için)
PySpark'e Giriş

Bir UDF Tanımlama ve Kaydetme

Tüm PySpark UDF'leri udf() fonksiyonu ile kaydedilmelidir.

# Fonksiyonu tanımla
def to_uppercase(s):
    return s.upper() if s else None

# Fonksiyonu kaydet to_uppercase_udf = udf(to_uppercase, StringType())
# UDF'yi DataFrame'e uygula df = df.withColumn("name_upper", to_uppercase_udf(df["name"]))
# Sonuçları gör df.show()

Unutmayın: UDF'ler, PySpark DataFrames üzerinde özel Python mantığı uygulamanıza olanak tanır

PySpark'e Giriş

pandas UDF

  • Kod ve veri dönüşümlerinin maliyetini ortadan kaldırır
  • SparkSession'a kaydedilmesi gerekmez
  • Çok büyük veri kümelerinde pandas yeteneklerini kullanır
from pyspark.sql.functions import pandas_udf

@pandas_udf("float")
def fahrenheit_to_celsius_pandas(temp_f):
    return (temp_f - 32) * 5.0/9.0
PySpark'e Giriş

PySpark UDF'leri vs. pandas UDF'leri

PySpark UDF

  • Nispeten küçük veri kümeleri için en iyisi
  • Veri temizleme gibi basit dönüşümler
  • Değişiklikler sütun düzeyinde, satır düzeyinde değil
  • udf() ile bir Spark Oturumuna kaydedilmelidir

pandas UDF

  • Nispeten büyük veri kümeleri
  • Basit veri temizlemenin ötesinde karmaşık işlemler
  • Sütun düzeyinden ziyade satır düzeyinde özel değişiklikler
  • Spark Oturumu dışında çağrılabilir
PySpark'e Giriş

Hadi pratik yapalım!

PySpark'e Giriş

Preparing Video For Download...