PySpark a gran escala

Introducción a PySpark

Benjamin Schmidt

Data Engineer

Aprovechando la escala

  • PySpark funciona eficazmente con gigabytes y terabytes de datos
  • Con PySpark, la velocidad y el procesamiento eficiente son el objetivo
  • Comprender la ejecución de PySpark mejora aún más la eficiencia
  • Usa difusión para gestionar todo el clúster
joined_df = large_df.join(broadcast(small_df), 
                          on="key_column", how="inner")
joined_df.show()
Introducción a PySpark

Planes de ejecución

# Usando explain() para ver el plan de ejecución
df.filter(df.Age > 40).select("Name").explain()
== Plan físico ==
*(1) Filtro (isnotnull(Age) AND (Age > 30))
+- Escaneo ExistingRDD[Name:String, Age:Int]
1 https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.explain.html
Introducción a PySpark

Cachear y persistir DataFrames

  • Caché: Almacena datos en memoria para acceso más rápido en conjuntos de datos pequeños
  • Persistencia: Almacena datos en diferentes niveles de almacenamiento para conjuntos de datos grandes
df = spark.read.csv("large_dataset.csv", header=True, inferSchema=True)

# Cachear el DataFrame
df.cache()

# Realizar múltiples operaciones en el DataFrame cacheado df.filter(df["column1"] > 50).show() df.groupBy("column2").count().show()
Introducción a PySpark

Persistir DataFrames con diferentes niveles de almacenamiento

# Persistir el DataFrame con nivel de almacenamiento
from pyspark import StorageLevel

df.persist(StorageLevel.MEMORY_AND_DISK)

# Realizar transformaciones result = df.groupBy("column3").agg({"column4": "sum"}) result.show() # Despersistir después de usar df.unpersist()
Introducción a PySpark

Optimizando PySpark

  • Subsecciones pequeñas: Cuanta más datos se usen, más lenta será la operación: Elige herramientas como map() en lugar de groupby() por la selectividad de los métodos
  • Joins de difusión: La difusión usará todo el cómputo, incluso en conjuntos de datos más pequeños
  • Evita acciones repetidas: Las acciones repetidas en los mismos datos consumen tiempo y recursos sin beneficio
Introducción a PySpark

¡Vamos a practicar!

Introducción a PySpark

Preparing Video For Download...