Spark je nejrozšířenější engine pro zpracování velkých dat. In-memory computing, PySpark a Spark SQL.
Spark — základy¶
Distribuované zpracování — data se rozdělí mezi uzly clusteru.
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/")
Optimalizace¶
- Partitioning — podle nejčastějších filtrů
- Caching — opakovaně používané datasety
- Broadcast join — malé lookup tabulky
- AQE — automatická optimalizace v Spark 3+
Shrnutí¶
Spark je standard pro distribuované zpracování. PySpark a Spark SQL pokrývají ETL i analytiku.
apache sparkbatch processingbig datapyspark