Conjuntos de datos distribuidos resilientes en PySpark

Introducción a PySpark

Benjamin Schmidt

Data Engineer

¿Qué es la paralelización en PySpark?

  • Paralelización automática de datos y cálculos en varios nodos de un clúster
  • Procesamiento distribuido de grandes conjuntos de datos en varios nodos
  • Los nodos trabajadores procesan datos en paralelo, combinando al final de la tarea
  • Procesamiento más rápido a gran escala (piensa en gigabytes o incluso terabytes)

Paralelización

Introducción a PySpark

Entendiendo los RDDs

RDDs o Conjuntos de Datos Distribuidos Resilientes:

  • Colecciones de datos distribuidas en un clúster con recuperación automática de fallos de nodos
  • Ideales para datos a gran escala
  • Inmutables y se pueden transformar con operaciones como map() o filter(), con acciones como collect() o paralelize() para obtener resultados o crear RDDs
Introducción a PySpark

Creando un RDD

# Iniciar una sesión de Spark
from pyspark.sql import SparkSession

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

# Crear un DataFrame desde un csv census_df = spark.read.csv("/census.csv")
# Convertir DataFrame a RDD census_rdd = census_df.rdd
# Mostrar el contenido del RDD usando collect() census_rdd.collect()
Introducción a PySpark

Mostrando Collect

# Recoger todo el DataFrame en una lista local de objetos Row en Python
data_collected = df.collect()

# Imprimir los datos recogidos
for row in data_collected:
    print(row)
```    
Introducción a PySpark

RDDs vs DataFrames

DataFrames

  • Alto nivel: Optimizado para facilidad de uso
  • Operaciones tipo SQL: Trabaja con consultas tipo SQL y realiza operaciones complejas con menos código
  • Información de esquema: Contiene columnas y tipos como una tabla SQL

RDDs

  • Bajo nivel: Más flexible pero requiere más líneas de código para operaciones complejas
  • Seguridad de tipo: Conserva tipos de datos pero no tiene los beneficios de optimización de los DataFrames
  • Sin esquema: Más difícil de trabajar con datos estructurados como SQL o datos relacionales
  • Gran escalabilidad
  • Muy verboso comparado con DataFrames y pobre en analítica
Introducción a PySpark

Funciones y métodos útiles

  • map(): aplica funciones (incluyendo las que escribimos como una función lambda) a través de un conjunto de datos como: rdd.map(map_function)
  • collect(): recoge datos de todo el clúster como: rdd.collect()
Introducción a PySpark

¡Vamos a practicar!

Introducción a PySpark

Preparing Video For Download...