Seturi de date distribuite reziliente în PySpark

Introducere în PySpark

Benjamin Schmidt

Data Engineer

Ce este paralelizarea în PySpark?

  • Paralelizarea automată a datelor și calculelor pe mai multe noduri
  • Procesare distribuită a seturilor mari de date
  • Nodurile worker procesează datele în paralel, combinând rezultatele la final
  • Procesare mai rapidă la scară mare (gigaocteți sau chiar teraocteți)

Paralelizare

Introducere în PySpark

Înțelegerea RDD-urilor

RDD-urile sau Resilient Distributed Datasets:

  • Colecții de date distribuite în cluster, cu recuperare automată la erori de nod
  • Potrivite pentru date la scară largă
  • Imuabile; pot fi transformate cu operații precum map() sau filter(), și acțiuni precum collect() sau paralelize() pentru a obține rezultate sau a crea RDD-uri
Introducere în PySpark

Crearea unui RDD

# Initialize a Spark session
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("RDDExample").getOrCreate()

# Create a DataFrame from a csv census_df = spark.read.csv("/census.csv")
# Convert DataFrame to RDD census_rdd = census_df.rdd
# Show the RDD's contents using collect() census_rdd.collect()
Introducere în PySpark

Utilizarea metodei collect()

# Collect the entire DataFrame into a local Python list of Row objects
data_collected = df.collect()

# Print the collected data
for row in data_collected:
    print(row)
```    
Introducere în PySpark

RDD-uri vs. DataFrames

DataFrames

  • Nivel înalt: Optimizate pentru ușurință în utilizare
  • Operații similare SQL: Interogări SQL și operații complexe cu mai puțin cod
  • Informații de schemă: Conțin coloane și tipuri, ca un tabel SQL

RDD-uri

  • Nivel scăzut: Mai flexibile, dar necesită mai mult cod pentru operații complexe
  • Siguranța tipurilor: Păstrează tipurile de date, fără optimizările DataFrames
  • Fără schemă: Mai dificile pentru date structurate sau relaționale
  • Scalare la scară largă
  • Foarte verbale față de DataFrames și slabe la analiză
Introducere în PySpark

Funcții și metode utile

  • map(): metodă care aplică funcții (inclusiv lambda) pe un set de date: rdd.map(map_function)
  • collect(): colectează date din cluster: rdd.collect()
Introducere în PySpark

Să exersăm!

Introducere în PySpark

Preparing Video For Download...