SPARK

Învață Apache Spark & PySpark: comenzi explicate cu exemple

16 comenzi 7 categorii

Apache Spark este cel mai avansat și utilizat motor unificat de calcul distribuit pentru procesarea pe scară largă a datelor (Big Data) și învățare automată. Înlocuind definitiv vechiul model MapReduce din Hadoop (care scria fiecare pas intermediar lent pe disc), Spark execută calculele direct în memorie (In-Memory Processing), fiind de până la 100 de ori mai rapid.

Prin intermediul API-ului său cel mai popular, PySpark (legătura nativă Python), echipele de inginerie a datelor și oamenii de știință a datelor (Data Scientists) pot manipula cu ușurință petabytes de informație folosind structuri de date de nivel înalt (DataFrames), interogări Spark SQL optimizate automat de motorul Catalyst Optimizer și procesare continuă cu Structured Streaming pe arhitecturi moderne Lakehouse (Delta Lake).

Arhitectura Distribuită Master-Worker în Apache Spark
# Driver Program (Punctul de Intrare / SparkSession)
# ┌─────────────────────────────────────────────────────────────┐
# │ SparkSession ──► Catalyst Optimizer ──► DAG Scheduler      │
# └────────────────────────────┬────────────────────────────────┘
#                              │ (Instrucțiuni de Task pe Rețea)
#                              ▼
# ┌─────────────────────────────────────────────────────────────┐
# │ Cluster Manager (Kubernetes, YARN, Spark Standalone)        │
# └──────┬──────────────────────┬──────────────────────┬────────┘
#        │                      │                      │
#        ▼                      ▼                      ▼
# ┌──────────────┐     ┌──────────────┐     ┌──────────────┐
# │ Worker Node  │     │ Worker Node  │     │ Worker Node  │
# │ ┌──────────┐ │     │ ┌──────────┐ │     │ ┌──────────┐ │
# │ │Executor  │ │     │ │Executor  │ │     │ │Executor  │ │
# │ │Task Task │ │     │ │Task Task │ │     │ │Task Task │ │
# │ │In-Memory │ │     │ │In-Memory │ │     │ │In-Memory │ │
# │ └──────────┘ │     │ └──────────┘ │     │ └──────────┘ │
# └──────────────┘     └──────────────┘     └──────────────┘

Pilonii Tehnologici ai Apache Spark

Componentă Spark Mecanism Tehnic Rol în Ingineria Datelor
Spark DataFrames Colecții distribuite de date organizate în coloane denumite cu scheme stricte. Oferă o sintaxă expresivă asemănătoare cu Pandas, dar scalabilă pe mii de noduri de calcul.
Catalyst Optimizer Motor de optimizare a planurilor de execuție prin rescrierea inteligentă a interogărilor. Aplică automat predicate pushdown, proiecții de coloane și optimizări de tip broadcast join.
Tungsten Engine Management manual al memoriei off-heap în format binar și generare de cod la cald (Whole-Stage CodeGen). Elimină pauzele de Garbage Collection pe JVM și optimizează calculele direct în cache-ul procesorului L1/L2.
Structured Streaming Procesare de fluxuri în timp real modelate ca tabele care cresc continuu. Garanții stricte de procesare Exactly-Once cu integrare nativă pentru Apache Kafka și Delta Lake.
Script PySpark: Citire Parquet, Filtrare și Agregare Distribuită
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, count, sum, avg

# 1. Inițializarea sesiunii Spark:
spark = SparkSession.builder \
    .appName("DexblogEnterpriseAnalytics") \
    .config("spark.sql.adaptive.enabled", "true") \
    .getOrCreate()

# 2. Citirea unui set masiv de date Parquet direct din cloud (S3 / HDFS):
df = spark.read.parquet("s3a://data-lake/transactions/year=2026/")

# 3. Transformări declarative optimizate de Catalyst:
summary = df.filter(col("status") == "COMPLETED") \
    .groupBy("merchant_category") \
    .agg(
        count("transaction_id").alias("total_count"),
        sum("amount").alias("total_volume"),
        avg("amount").alias("avg_ticket")
    ) \
    .orderBy(col("total_volume").desc())

# 4. Afișarea primelor 10 rezultate agregate:
summary.show(10, truncate=False)

spark.stop()

Arhitectură & Catalyst 1 comandă

io 2 comenzi

PySpark & Operațiuni 1 comandă

transformations 7 comenzi

Performanță & Tuning 1 comandă

Structured Streaming & Delta Lake 1 comandă

sql_and_tuning 3 comenzi