Sınav not defterini ayrıntılı kod olarak değil, doğru işlem olarak sorar: hangi adım yineleneni çözer, hangi işlem boş değeri doldurur, hangi ayar Direct Lake’i etkiler. Yine de kavram kendi elinle yapınca kalıcı olur. Bu ödev AnadoluLH lakehouse’undaki Files/ham klasörünü kullanır.
Ödev 1: CSV’den Delta’ya
Lakehouse’a bir not defteri bağla ve çalıştır:
from pyspark.sql import functions as F
df = (spark.read
.option("header", True)
.option("inferSchema", False)
.csv("Files/ham/Musteriler.csv"))
print(df.columns) # ilk sütun adında görünmez bir karakter var mı?
print(df.count())
df.filter(F.col("Sehir").isNull()).count()
Sehir sütununda 7 boş değer. Boşlar veride bilerek var: Musteriler[Sehir] boş olan satırların DAX’taki davranışını “BLANK ve hatalar” dersinde gördün.inferSchema kapalıyken her sütun metin gelir. Bu bilinçli: türü sen verirsin ve hatalı değeri görürsün.
Ödev 2: Türü ver, boşu çöz, yineleneni kontrol et
temiz = (df
.withColumn("MusteriNo", F.col("MusteriNo").cast("int"))
.fillna({"Sehir": "Bilinmiyor"})
.dropDuplicates(["MusteriNo"]))
print(temiz.count())
temiz.write.format("delta").mode("overwrite").saveAsTable("Musteriler_Temiz")
MusteriNo yinelenmiyor. Boş şehirler “Bilinmiyor” oldu. SQL analiz uç noktasında Musteriler_Temiz görünmeli.Anahtar yinelenmiyorsa dropDuplicates hiçbir şey değiştirmez, ama satır sayısını önce ve sonra karşılaştırmak iyi bir alışkanlıktır. Satır sayısı düştüyse hangi satırın neden silindiğini açıklayabilmelisin.
Delta dosya bakımı
| İşlem | Ne yapar? | Ne zaman? |
|---|---|---|
OPTIMIZE | Küçük dosyaları birleştirir | Dosya sayısı tablo boyutundan hızlı artıyorsa; birikmiş sorunu bir kez çöz, sonra otomatik sıkıştırmayı (auto compaction) aç |
| V-Order | Parquet dosyasını okuma için düzenler | Spark’ın yazdığı tablolarda yalnız Direct Lake ana tüketiciyse aç. Ambarda varsayılan olarak açıktır |
VACUUM | Saklama süresi dolan, başvurulmayan dosyaları siler | Depolamayı geri kazanır, etkin dosya düzenini iyileştirmez. Süreyi kısaltmak zaman yolculuğunu ve eşzamanlı okuyucuları bozabilir |
Learn’e göre Direct Lake genellikle 1 ile 16 milyon satırlık satır gruplarıyla en iyi çalışır. Küçük ve dengesiz satır grupları daha çok sütun segmenti ve dönüştürme yükü demektir. Bir tablonun yavaş olduğunu görünce önce dosya ve satır grubu durumuna bak, ayarı sonra değiştir.
Ödev 3: Etkisini göster
Aynı tabloya küçük parçalar halinde on kez append yap, dosya sayısına bak, sonra OPTIMIZE çalıştır:
%%sql OPTIMIZE Musteriler_Temiz; DESCRIBE DETAIL Musteriler_Temiz;
numFiles değerinin düştüğünü not et. Mülakatta bunu “dosya sayısını ölçtüm, sıkıştırdım, tekrar ölçtüm” diye anlatabilirsin.