0Pricing
Scala for Backend Engineering & Functional Programming · Ders

Birleştirmeler

Gruplayın ve birleştirin

Birleştirmeler, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 4 dersinin 4. 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.

Neden Toplulaştırma Yapılır?

Toplulaştırmalar, çok sayıdaki satırı daha az sayıda satırla özetler: grup başına toplamlar, ortalamalar ve sayımlar. Spark'ta bunlar, verileri küme genelinde karıştırabilen geniş işlemlerdir.

Genel Toplulaştırmalar

agg ve count, sum, avg, min, max gibi işlevlerle tüm DataFrame üzerinde tek bir özet hesaplayın.

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

df.agg(
  count("*").as("rows"),
  avg("age").as("avg_age")
).show()

groupBy

groupBy, satırları bir veya daha fazla sütuna göre bölümlere ayırır ve toplulaştırmaya hazır bir RelationalGroupedDataset üretir.

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

val byCity = df.groupBy("city").agg(count("*").as("people"))
byCity.show()

Birden Çok Toplulaştırma

Tek geçişte grup başına birçok özet hesaplamak için agg'ye birden çok toplulaştırma ifadesi aktarın.

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

df.groupBy("department").agg(
  sum("salary").as("total"),
  avg("salary").as("avg"),
  max("salary").as("top")
).show()

Farklı Değerleri Sayma

Benzersiz değerleri saymak için countDistinct, çok büyük veri kümelerinde daha hızlı yaklaşık sayım için approx_count_distinct kullanın.

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

df.agg(countDistinct("city").as("unique_cities")).show()

having ile Grupları Filtreleme

SQL'de HAVING, toplulaştırılmış grupları filtreler. DSL'de, hesaplanan sütun üzerinde agg sonrasında bir filter uygulayın.

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

df.groupBy("city")
  .agg(count("*").as("n"))
  .filter(col("n") > 100)
  .show()

SQL'de Toplulaştırma

Kaydedilmiş bir görünüme karşı SQL sorgusundakiyle aynı mantık kullanılır; GROUP BY ve HAVING kullanılır.

df.createOrReplaceTempView("people")
spark.sql(
  "SELECT city, COUNT(*) AS n FROM people GROUP BY city HAVING COUNT(*) > 100"
).show()

Pivot Tabloları

pivot, bir sütunun farklı değerlerini ayrı sütunlara dönüştürür; bölge ve çeyrek başına satışlar gibi çapraz tablolar için kullanışlıdır.

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

sales.groupBy("region")
     .pivot("quarter")
     .agg(sum("amount"))
     .show()

Pencere İşlevleri

Pencere işlevleri, satırları daraltmadan bir kayan çerçeve üzerinde toplulaştırma yapar; devam eden toplamlar veya sıralamalar için idealdir.

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

val w = Window.partitionBy("dept").orderBy(col("salary").desc)
df.withColumn("rank", rank().over(w)).show()

RDD Toplulaştırmaları

RDD düzeyinde aggregateByKey ve reduceByKey, özel mantık ve verimlilik için yerel ön birleştirme kullanarak değerleri anahtar başına birleştirir.

val pairs = sc.parallelize(Seq(("a", 10), ("a", 20), ("b", 5)))
val sums  = pairs.reduceByKey(_ + _)
// (a, 30), (b, 5)

Basit Scala groupBy

Kendi başına çalışan bir benzeri: Scala koleksiyonlarındaki groupBy ile mapValues, Spark'taki gruplama ve toplulaştırma işlemini yansıtır.

object Main {
  def main(args: Array[String]): Unit = {
    val data = Seq(("a", 10), ("a", 20), ("b", 5))
    val sums = data.groupBy(_._1).map { case (k, v) => k -> v.map(_._2).sum }
    sums.toSeq.sortBy(_._1).foreach { case (k, s) => println(s"$k: $s") }
  }
}

Hızlı Kontrol

Satırları grup başına tek satırda birleştirmeden bir satır çerçevesi üzerinde toplulaştırma yapan özellik hangisidir?

Özet

Spark'ta verileri toplulaştırdınız:

  • count, sum, avg, min, max ile agg
  • groupBy, çoklu toplulaştırmalar ve having filtreleri
  • pivot ve pencere işlevleri
  • RDD reduceByKey / aggregateByKey

Apache Spark kursunu tamamladınız.

Sıkça Sorulan Sorular

“Birleştirmeler” dersi ücretsiz mi?

Evet — “Birleştirmeler” 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.

“Birleştirmeler” dersinde ne öğreneceğim?

Gruplayın ve birleştirin 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 4. dersidir.

“Birleştirmeler” 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