ASD

Spark Optimization

Optimiza jobs de Apache Spark con particionamiento, caching, optimización de shuffle y ajuste de memoria, para mejorar rendimiento y escalar pipelines.

Estrellas
38.8k

en todo el repo

Actividad
47

0–100, la ruta de este skill

Actualizado
hace 2 meses

último commit aquí

Commits
1

últimos 90 días

Contexto
790 tok

48 tok en reposo

Paquete
2 archivos

13 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add wshobson/agents --skill spark-optimization --agent claude-code

Se instala solo en este repositorio.

Qué hace

  • Configura Spark con AQE, coalescing de particiones y skew join habilitados
  • Aplica Kryo serializer y formatos columnar (Parquet/Delta) en lecturas y escrituras
  • Ajusta particionamiento, memoria de ejecutores y broadcast joins para tablas pequeñas
  • Detecta y corrige data skew, spills y presión de GC vía Spark UI

Úsalo cuando

  • Optimizar jobs de Spark lentos
  • Ajustar configuración de memoria y ejecutores
  • Implementar estrategias de particionamiento eficientes
  • Depurar problemas de rendimiento o escalar pipelines de Spark

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • Mi job de Spark está muy lento, ayúdame a optimizarlo
    • ¿Cómo configuro el particionamiento y la memoria de executors en Spark?
    • Tengo data skew en un join de Spark, ¿cómo lo soluciono?

    SKILL.md

    En inglés

    Apache Spark Optimization

    Production patterns for optimizing Apache Spark jobs including partitioning strategies, memory management, shuffle optimization, and performance tuning.

    When to Use This Skill

    • Optimizing slow Spark jobs
    • Tuning memory and executor configuration
    • Implementing efficient partitioning strategies
    • Debugging Spark performance issues
    • Scaling Spark pipelines for large datasets
    • Reducing shuffle and data skew

    Core Concepts

    1. Spark Execution Model

    Driver Program
        ↓
    Job (triggered by action)
        ↓
    Stages (separated by shuffles)
        ↓
    Tasks (one per partition)
    

    2. Key Performance Factors

    Factor Impact Solution
    Shuffle Network I/O, disk I/O Minimize wide transformations
    Data Skew Uneven task duration Salting, broadcast joins
    Serialization CPU overhead Use Kryo, columnar formats
    Memory GC pressure, spills Tune executor memory
    Partitions Parallelism Right-size partitions

    Quick Start

    from pyspark.sql import SparkSession
    from pyspark.sql import functions as F
    
    # Create optimized Spark session
    spark = (SparkSession.builder
        .appName("OptimizedJob")
        .config("spark.sql.adaptive.enabled", "true")
        .config("spark.sql.adaptive.coalescePartitions.enabled", "true")
        .config("spark.sql.adaptive.skewJoin.enabled", "true")
        .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
        .config("spark.sql.shuffle.partitions", "200")
        .getOrCreate())
    
    # Read with optimized settings
    df = (spark.read
        .format("parquet")
        .option("mergeSchema", "false")
        .load("s3://bucket/data/"))
    
    # Efficient transformations
    result = (df
        .filter(F.col("date") >= "2024-01-01")
        .select("id", "amount", "category")
        .groupBy("category")
        .agg(F.sum("amount").alias("total")))
    
    result.write.mode("overwrite").parquet("s3://bucket/output/")
    

    Detailed patterns and worked examples

    Detailed pattern documentation lives in references/details.md. Read that file when the navigation tier above is insufficient.

    Best Practices

    Do's

    • Enable AQE - Adaptive query execution handles many issues
    • Use Parquet/Delta - Columnar formats with compression
    • Broadcast small tables - Avoid shuffle for small joins
    • Monitor Spark UI - Check for skew, spills, GC
    • Right-size partitions - 128MB - 256MB per partition

    Don'ts

    • Don't collect large data - Keep data distributed
    • Don't use UDFs unnecessarily - Use built-in functions
    • Don't over-cache - Memory is limited
    • Don't ignore data skew - It dominates job time
    • Don't use .count() for existence - Use .take(1) or .isEmpty()

    Reproducido de wshobson/agents bajo licencia MIT. Leer esta página en markdown.

    Archivos

    2 archivos en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Requiere un entorno con Apache Spark y PySpark configurado.

    Detalles

    Creador
    wshobson
    Licencia
    MIT
    Recursos incluidos
    referencias
    Repositorio
    wshobson/agents
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de wshobson/agents

    Este repo incluye 180 skills. Si instalas uno, normalmente ya tienes los demás.

    Úsalo al seleccionar y colocar iconos, imágenes, SVGs, diagramas o infografías de apoyo aprobados en un PPTX editable.

    Costo de contexto al activarse
    344 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo cuando pidan optimizar un prompt, mejorar su rendimiento, diseñar una plantilla, aplicar chain-of-thought, few-shot prompting o técnicas avanzadas de prompt engineering para producción.

    Costo de contexto al activarse
    1.3k tok
    Tamaño del paquete
    10 archivos
    Última actualización
    el mes pasado
    herramientas desarrollo

    Úsalo al redactar o reparar una especificación JSON con coordenadas explícitas para un PPTX editable.

    Costo de contexto al activarse
    489 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo para validar o reparar un PPTX editable en cuanto a geometría, accesibilidad, editabilidad nativa, linaje de fuente e integridad del paquete OOXML.

    Costo de contexto al activarse
    409 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo para analizar un PPTX de referencia en modo solo lectura: estructura, tema, tipografía, ritmo de layout, diagnósticos, catálogos de plantillas derivados o inspección segura del paquete OOXML.

    Costo de contexto al activarse
    689 tok
    Tamaño del paquete
    8 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo al preparar la narrativa, las fuentes y el contexto de diseño para un nuevo deck PPTX editable.

    Costo de contexto al activarse
    415 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Skills relacionados

    Construye pipelines MLOps de extremo a extremo: preparación de datos, entrenamiento, validación y despliegue en producción del modelo.

    Costo de contexto al activarse
    1.8k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 5 meses
    datos analitica

    Combina búsqueda vectorial y por palabras clave para mejorar la recuperación. Útil al implementar RAG, motores de búsqueda o cuando ningún enfoque solo basta.

    Costo de contexto al activarse
    508 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 2 meses
    datos analitica

    Transforma datos en narrativas persuasivas usando visualización, contexto y estructura. Útil al presentar analíticas a stakeholders, crear reportes o presentaciones ejecutivas.

    Costo de contexto al activarse
    530 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 2 meses
    datos analitica