Organizarea Fizică pe Disc: partitionBy și bucketBy în Apache Spark & PySpark

io Apache Spark 3.5 / PySpark Q&A / Distribuie cod

Structurarea ierarhică a fișierelor în foldere și hash buckets pentru eliminarea scanărilor inutile (Partition Pruning).

Sintaxă
df.write.partitionBy('an', 'luna').bucketBy(10, 'user_id').saveAsTable('tabel')

partitionBy() împarte fizic datele pe disc în subdirectoare ierarhice bazate pe valorile unei coloane cu cardinalitate scăzută (ex. an=2026/luna=10/). La executarea interogărilor cu filtre pe acele coloane, Spark scanează doar folderele relevante (Partition Pruning), reducând masiv volumul de I/O.

Pentru coloane cu cardinalitate foarte ridicată (ex. user_id), se combină cu bucketBy(), care pre-calculează hash-ul și sortează datele în fișiere fixe, eliminând complet operațiunea de Shuffling la join-urile viitoare pe acea cheie.

Exemplu: Salvare partiționată după dată și bucketing după ID
df_evenimente.write \
    .format("parquet") \
    .partitionBy("an", "luna") \
    .bucketBy(8, "utilizator_id") \
    .sortBy("timestamp") \
    .mode("overwrite") \
    .saveAsTable("lake.evenimente_utilizatori")

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Organizarea Fizică pe Disc: partitionBy și bucketBy

Ai o nelămurire despre utilizarea comenzii Organizarea Fizică pe Disc: partitionBy și bucketBy sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.