0Pricing
Scala for Backend Engineering & Functional Programming · Ders

Dönüşümler ve Eylemler

Tembel hesaplama

Dönüşümler ve Eylemler, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Scala for Backend Engineering & Functional Programming öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Scala for Backend Engineering & Functional Programming kursu toplamda 4 dersten oluşur.

İki Tür İşlem

Spark işlemleri dönüştürmelere (yeni bir veri kümesi oluşturur, tembeldir) ve eylemlere (hesaplamayı tetikler ve bir sonuç döndürür veya çıktıyı yazar) ayrılır.

Tembel Değerlendirme

Dönüştürmeler tembeldir: yapılacakları kaydeder ancak hiçbir şeyi çalıştırmaz. Spark, dönüştürmelerden oluşan yönlü döngüsüz bir grafik (DAG) oluşturur ve yalnızca bir eylem çağrıldığında çalıştırır.

map ve filter

map her öğeyi dönüştürür; filter ise bir koşula uyan öğeleri korur. Her ikisi de yeni RDD'ler/DataFrame'ler döndürür ve henüz çalıştırılmaz.

val nums  = sc.parallelize(1 to 10)
val evens = nums.filter(_ % 2 == 0).map(_ * 10)
// nothing computed yet

flatMap

flatMap, her öğeyi sıfır veya daha fazla çıktıya dönüştürür ve bunları düzleştirir; satırları sözcüklere ayırmak için klasik bir kullanımdır.

val lines = sc.parallelize(Seq("hello world", "spark rocks"))
val words = lines.flatMap(_.split(" "))

Yaygın Eylemler

Eylemler yürütmeyi tetikler:

  • collect — tüm sonuçları sürücüye getirir
  • count — öğelerin sayısını verir
  • first / take(n) — örnek satırları alır
  • reduce — tek bir değerde birleştirir
val total = sc.parallelize(1 to 100).reduce(_ + _)
println(total) // 5050 — runs now

Dar ve Geniş

Dar dönüşümler (map, filter) veri taşınmasını gerektirmez. Geniş dönüşümler (groupByKey, reduceByKey, join) ağ üzerinden bir karıştırma işlemi başlatır.

reduceByKey

Anahtar-değer RDD'lerinde reduceByKey, değerleri anahtar başına toplar. Karıştırmadan önce yerel olarak birleştirme yaptığı için groupByKey'den daha verimlidir.

val pairs  = sc.parallelize(Seq(("a", 1), ("b", 1), ("a", 1)))
val counts = pairs.reduceByKey(_ + _)
// (a, 2), (b, 1)

Önbelleğe Alma

Bir veri kümesi birden çok eylemde yeniden kullanılıyorsa cache veya persist, her seferinde yeniden hesaplanmaması için onu bellekte tutar.

val cached = sc.parallelize(1 to 1000).filter(_ % 3 == 0).cache()
println(cached.count())
println(cached.sum())

DataFrame Dönüşümleri

DataFrame'lerin kendilerine özgü tembel dönüşümleri vardır: select, where, withColumn, orderBy. show ve collect gibi eylemler bunları tetikler.

import org.apache.spark.sql.functions._

val adults = df.where(col("age") >= 18)
               .withColumn("adult", lit(true))
adults.show()

Klasik Sözcük Sayma

Kanonik Spark işi: satırları bölmek, her sözcüğü bire eşlemek ve anahtara göre azaltmak. İşlem hattını yalnızca son collect çalıştırır.

val text   = sc.textFile("book.txt")
val counts = text.flatMap(_.split(" "))
                 .map(w => (w, 1))
                 .reduceByKey(_ + _)
counts.collect().foreach(println)

Basit Scala Tembel Benzeri

Kendi başına çalışan bir Scala benzeri: tembel bir görünüm, işi zorlanana kadar erteler ve Spark'ın dönüşüm ile eylem ayrımını yansıtır.

object Main {
  def main(args: Array[String]): Unit = {
    val pipeline = (1 to 10).view.filter(_ % 2 == 0).map(_ * 10) // lazy
    val result = pipeline.toList // forces evaluation (action)
    println(result)
  }
}

Hızlı Kontrol

Spark, map ve filter dönüşümlerinden oluşan bir zinciri ne zaman gerçekten yürütür?

Özet

Spark'ın yürütme modelini öğrendiniz:

  • Dönüşümler tembeldir (map, filter, flatMap, reduceByKey)
  • Eylemler çalışmayı tetikler (collect, count, reduce)
  • dar ve geniş (karıştırma) işlemler
  • sonuçları yeniden kullanmak için cache

Sıradaki konu: Spark SQL.

Sıkça Sorulan Sorular

“Dönüşümler ve Eylemler” dersi ücretsiz mi?

Evet — “Dönüşümler ve Eylemler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Scala for Backend Engineering & Functional Programming kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Scala for Backend Engineering & Functional Programming kursu toplamda 4 dersten oluşur.

“Dönüşümler ve Eylemler” dersinde ne öğreneceğim?

Tembel hesaplama Scala for Backend Engineering & Functional Programming ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Scala for Backend Engineering & Functional Programming öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Scala for Backend Engineering & Functional Programming, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Dönüşümler ve Eylemler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Scala for Backend Engineering & Functional Programming dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Scala for Backend Engineering & Functional Programming dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. RDD'ler ve DataFrames
  2. Dönüşümler ve Eylemler
  3. Spark SQL
  4. Birleştirmeler
← Scala for Backend Engineering & Functional Programming Sayfasına Dön