Spark ist die am weitesten verbreitete Engine fuer die Verarbeitung grosser Datenmengen. In-Memory-Computing, PySpark und Spark SQL.
Spark — Grundlagen¶
Verteilte Verarbeitung — Daten werden auf Cluster-Knoten aufgeteilt.
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, sum, avg, year, month, count
spark = SparkSession.builder.appName("Analytics").getOrCreate()
orders = spark.read.parquet("s3://lake/orders/")
customers = spark.read.parquet("s3://lake/customers/")
revenue = (
orders.filter(col("status") == "completed")
.join(customers, "customer_id")
.groupBy(year("order_date").alias("year"), "segment")
.agg(sum("total_czk").alias("revenue"), count("*").alias("orders"))
)
revenue.write.format("delta").mode("overwrite")
.save("s3://lake/marts/revenue/")
Optimierung¶
- Partitionierung — nach den haeufigsten Filtern
- Caching — wiederholt verwendete Datensaetze
- Broadcast Join — kleine Lookup-Tabellen
- AQE — automatische Optimierung in Spark 3+
Zusammenfassung¶
Spark ist der Standard fuer verteilte Verarbeitung. PySpark und Spark SQL decken sowohl ETL als auch Analytik ab.