spark-optimization
Ajuda seu agente a tornar o processamento de grandes volumes de dados mais rápido e eficiente. Ele ajusta configurações para otimizar o desempenho do Apache Spark.
O que ela faz
Esta ferramenta ajuda a fazer com que programas de computador que processam grandes quantidades de dados (chamados de 'jobs' no Apache Spark) rodem mais rápido e de forma mais eficiente. Ela ajusta como os dados são organizados e processados.
Quando usar
- ✓Quando um programa de processamento de dados está demorando muito para terminar.
- ✓Ao tentar fazer um programa processar mais dados sem ficar mais lento.
- ✓Quando você percebe que o programa está usando muita memória ou demorando para 'conversar' com outros computadores.
Exemplo do que pedir para a IA
“Como posso fazer meu programa de processamento de dados rodar mais rápido?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta analisa como o programa está funcionando e sugere ajustes. Ela pode mudar a forma como os dados são divididos, como a memória é usada e como as informações são trocadas entre as partes do programa.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add wshobson/agents --skill spark-optimizationOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/data-engineering/skills/spark-optimization/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Otimização do Apache Spark
Padrões de produção para otimizar jobs do Apache Spark, incluindo estratégias de particionamento, gerenciamento de memória, otimização de shuffle e ajuste de performance.
Quando Usar Esta Habilidade
- Otimizar jobs Spark lentos
- Ajustar a configuração de memória e executores
- Implementar estratégias eficientes de particionamento
- Depurar problemas de performance do Spark
- Escalar pipelines Spark para grandes conjuntos de dados
- Reduzir shuffle e assimetria de dados (data skew)
Conceitos Principais
1. Modelo de Execução do Spark
Driver Program
↓
Job (triggered by action)
↓
Stages (separated by shuffles)
↓
Tasks (one per partition)
2. Fatores Chave de Performance
| Fator | Impacto | Solução |
|---|---|---|
| Shuffle | I/O de rede, I/O de disco | Minimizar transformações amplas |
| Assimetria de Dados | Duração desigual das tarefas | Salting, joins broadcast |
| Serialização | Sobrecarga de CPU | Usar Kryo, formatos colunares |
| Memória | Pressão de GC, spills | Ajustar memória do executor |
| Partições | Paralelismo | Dimensionar corretamente as partições |
Início Rápido
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/")
Padrões Detalhados e Exemplos Práticos
A documentação detalhada dos padrões está em references/details.md. Leia este arquivo quando o nível de navegação acima for insuficiente.
Melhores Práticas
O Que Fazer
- Habilitar AQE - A execução adaptativa de consultas (Adaptive Query Execution) resolve muitos problemas
- Usar Parquet/Delta - Formatos colunares com compressão
- Fazer broadcast de tabelas pequenas - Evitar shuffle para joins pequenos
- Monitorar o Spark UI - Verificar assimetria, spills, GC
- Dimensionar corretamente as partições - 128MB - 256MB por partição
O Que Não Fazer
- Não coletar dados grandes - Manter os dados distribuídos
- Não usar UDFs desnecessariamente - Usar funções nativas
- Não fazer cache em excesso - A memória é limitada
- Não ignorar a assimetria de dados - Ela domina o tempo do job
- Não usar
.count()para existência - Usar.take(1)ou.isEmpty()
Perguntas frequentes
O que é 'shuffle'?
É quando o programa precisa reorganizar os dados entre diferentes computadores. Muita reorganização pode deixar o programa lento.
O que é 'data skew'?
É quando alguns computadores recebem muito mais dados para processar do que outros, fazendo com que o trabalho demore mais.
O que são 'partições'?
São pedaços menores de dados. Ter o número certo de pedaços ajuda o programa a trabalhar em paralelo e ser mais rápido.
Detalhes
Descrição original do autor
Optimize Apache Spark jobs with partitioning, caching, shuffle optimization, and memory tuning. Use when improving Spark performance, debugging slow jobs, or scaling data processing pipelines.
repo: wshobson/agents
Popularidade
- Estrelas no GitHub
- 41 mil
- Posição no ranking
- #4839
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
screen-reader-testing
Faz seu agente testar sites usando leitores de tela para garantir que sejam acessíveis.
wshobson/agents
wcag-audit-patterns
Ajuda seu agente a auditar sites para acessibilidade e corrigir problemas de acordo com as diretrizes WCAG.
wshobson/agents
multi-reviewer-patterns
Faz seu agente coordenar revisões de código paralelas, deduplicando achados e consolidando relatórios.
wshobson/agents
parallel-debugging
Permite ao agente depurar problemas complexos com investigações paralelas e análise de causa raiz.
wshobson/agents
Skills parecidas
pytorch-patterns
Ajuda seu agente a usar o PyTorch para criar modelos de aprendizado de máquina. Ele aplica as melhores práticas para treinar modelos de forma eficiente e garantir que os resultados sejam consistentes.
affaan-m/ECC
evm-token-decimals
Ajuda seu agente a evitar erros com números decimais em diferentes redes blockchain. Garante que os valores de tokens sejam precisos em transações e cálculos.
affaan-m/ECC
knowledge-agent
Cria e consulta bases de conhecimento com inteligência artificial. Permite fazer perguntas sobre trabalhos passados ou compilar conhecimento sobre um tema.
thedotmack/claude-mem