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,maxileagggroupBy, çoklu toplulaştırmalar vehavingfiltreleripivotve 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
- RDD'ler ve DataFrames
- Dönüşümler ve Eylemler
- Spark SQL
- Birleştirmeler