Pular para o conteúdo
Skillpedia
Machine learning41 mil · #4839

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

https://github.com/wshobson/agents/blob/main/plugins/data-engineering/skills/spark-optimization/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/wshobson/agents/blob/main/plugins/data-engineering/skills/spark-optimization/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-optimization

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/data-engineering/skills/spark-optimization/SKILL.md -o SKILL.md
Conteú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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas