# Spark Optimization > Optimiza jobs de Apache Spark con particionamiento, caching, optimización de shuffle y ajuste de memoria, para mejorar rendimiento y escalar pipelines. Fuente: https://skillsagentes.com/skills/wshobson/agents/spark-optimization Markdown: https://skillsagentes.com/skills/wshobson/agents/spark-optimization.md Repositorio: https://github.com/wshobson/agents Autor: wshobson Licencia: MIT Actualizado: hace 4 meses Coste de contexto: 48 tok instalada, 790 tok al activarse, 3.3k tok con todos los archivos del bundle Bundle: 2 archivos, 13 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add wshobson/agents --skill spark-optimization --agent claude-code # Cursor npx -y skills add wshobson/agents --skill spark-optimization --agent cursor # Codex npx -y skills add wshobson/agents --skill spark-optimization --agent codex # Gemini CLI npx -y skills add wshobson/agents --skill spark-optimization --agent gemini # Windsurf npx -y skills add wshobson/agents --skill spark-optimization --agent windsurf # Cline npx -y skills add wshobson/agents --skill spark-optimization --agent cline ``` ## 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 ## Cuándo usarla - 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 ## Qué la activa - "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?" ## Antes de instalar - Requiere un entorno con Apache Spark y PySpark configurado. ## Archivos - SKILL.md — 3 KB - references/details.md — 10 KB ## SKILL.md Reproducido tal cual desde wshobson/agents bajo MIT. Esta sección es el documento original y está 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 ```python 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()` ## Dónde encaja - Categoría: [Datos y analítica](https://skillsagentes.com/categorias/datos-analitica.md) — Consulta, limpia y visualiza datos sin salir del agente. - Creador: [wshobson](https://skillsagentes.com/creators/wshobson.md) — 183 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Hermes Tweet](https://skillsagentes.com/skills/wshobson/agents/hermes-tweet.md): Instala y opera Hermes Tweet, un plugin de Hermes Agent para investigar X/Twitter, leer timelines, analizar tweets y ejecutar operaciones privadas o de cambio de estado con aprobación previa. - [Superself](https://skillsagentes.com/skills/wshobson/agents/superself.md): Úsalo cuando un proyecto guarda su estado en Superself: lee `self context` al iniciar sesión, vincula el trabajo a una work unit, reporta con evidencia y registra decisiones confirmadas. - [Grounded Vault](https://skillsagentes.com/skills/wshobson/agents/grounded-vault.md): Úsalo para mantener un almacén Markdown de conocimiento donde cada afirmación compilada se rastrea hasta una fuente inmutable y el drift se detecta con git diff sin gastar tokens. - [Postgresql Table Design](https://skillsagentes.com/skills/wshobson/agents/postgresql-table-design.md): Úsalo al diseñar o revisar un esquema específico de PostgreSQL: buenas prácticas, tipos de datos, indexación, restricciones, patrones de rendimiento y funciones avanzadas. - [Prompt Engineering Patterns](https://skillsagentes.com/skills/wshobson/agents/prompt-engineering-patterns.md): Ú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. ## Skills relacionadas - [Backtesting Frameworks](https://skillsagentes.com/skills/wshobson/agents/backtesting-frameworks.md): Construye sistemas de backtesting robustos para estrategias de trading, manejando correctamente look-ahead bias, survivorship bias y costes de transacción. - [Similarity Search Patterns](https://skillsagentes.com/skills/wshobson/agents/similarity-search-patterns.md): Implementa búsqueda por similitud eficiente con bases de datos vectoriales; útil para búsqueda semántica, consultas de vecinos más cercanos u optimización de retrieval. - [Ml Pipeline Workflow](https://skillsagentes.com/skills/wshobson/agents/ml-pipeline-workflow.md): Construye pipelines MLOps de extremo a extremo: preparación de datos, entrenamiento, validación y despliegue en producción del modelo. - [Embedding Strategies](https://skillsagentes.com/skills/wshobson/agents/embedding-strategies.md): Selecciona y optimiza modelos de embeddings para búsqueda semántica y aplicaciones RAG, incluyendo estrategias de chunking y ajuste por dominio. - [Dbt Transformation Patterns](https://skillsagentes.com/skills/wshobson/agents/dbt-transformation-patterns.md): Domina dbt para ingeniería analítica: organización de modelos, testing, documentación y estrategias incrementales para transformaciones de datos. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)