repartition() vs coalesce() este o componentă esențială în ecosistemul Apache Spark & PySpark. Optimizarea numărului de partiții din memorie pentru prevenirea problemelor de out-of-memory sau fișiere mici (small files).
Sintaxă și Utilizare Practică
Exemplu practic documentat pas cu pas:
# coalesce: reduce numărul de partiții FĂRĂ shuffle complet de rețea (ideal înainte de scriere)
df_optimizat_pt_scriere = df_masiv.coalesce(10)
df_optimizat_pt_scriere.write.parquet("s3a://lake/curatat/")
# repartition: crește numărul de partiții sau redistribuie uniform pe o coloană (cu shuffle)
df_balansat = df_masiv.repartition(200, "regiune")
Bune Practici în Producție
- Eficiență Computațională: Aplicați predicate pushdown, filtrați din timp datele și evitați operațiunile de shuffle redundante.
- Calitatea Datelor: Definiți teste automate de integritate și monitorizați calitatea la fiecare transformare.
- Optimizare de Costuri: Folosiți încărcare incrementală și politici automate de auto-suspendare pentru resursele de calcul.