Compétences spark-optimization
📦

spark-optimization

Sûr

Optimiser les performances d'Apache Spark

Également disponible depuis: wshobson

Les tâches Spark lentes gaspillent des ressources et retardent les insights. Cette compétence fournit des patterns éprouvés pour le partitionnement, la mise en cache, l'optimisation des shuffle et le réglage de la mémoire afin d'accélérer vos pipelines de données.

Prend en charge: Claude Codex Code(CC)
🥉 75 Bronze
1

Télécharger le ZIP du skill

2

Importer dans Claude

Allez dans Paramètres → Capacités → Skills → Importer un skill

3

Activez et commencez à utiliser

Tester

Utilisation de "spark-optimization". Configurer Spark pour un jeu de données de 100 Go avec mise en cache fréquente

Résultat attendu:

  • spark.executor.memory: 8g
  • spark.executor.memoryOverhead: 2g
  • spark.memory.fraction: 0.6
  • spark.sql.shuffle.partitions: 200
  • spark.sql.adaptive.enabled: true
  • Recommandé : Utiliser MEMORY_AND_DISK_SER pour la persistance du cache

Utilisation de "spark-optimization". Corriger une jointure lente avec un déséquilibre de données 100x

Résultat attendu:

  • Détecté : Ratio de skew de partition 15,3x (seuil : 2x)
  • Solution : Appliquer la technique de jointure avec salt avec 10 compartiments
  • Alternative : Activer la gestion du skew de jointure AQE
  • Amélioration attendue : 5-8x plus rapide

Audit de sécurité

Sûr
v1 • 2/25/2026

All static analyzer findings were false positives. The skill contains Python/PySpark code examples for Apache Spark optimization. External command detections misidentified Python code as Ruby/shell execution. Network findings were documentation URLs. No actual security risks detected.

1
Fichiers analysés
430
Lignes analysées
0
résultats
1
Total des audits
Aucun problème de sécurité trouvé
Audité par: claude

Score de qualité

38
Architecture
100
Maintenabilité
87
Contenu
50
Communauté
100
Sécurité
100
Conformité aux spécifications

Ce que vous pouvez construire

Ingénieur de données optimisant un pipeline ETL

Réduire le temps d'exécution des traitements nocturnes de 4 heures à 45 minutes en implémentant l'élagage de partitions, les broadcast joins et le réglage de la mémoire.

Équipe d'analytique faisant évoluer les rapports

Gérer une croissance des données de 10x sans infrastructure supplémentaire en appliquant AQE, des stratégies de mise en cache appropriées et le Z-ordering.

Développeur déboguant des requêtes lentes

Identifier et corriger les problèmes de déséquilibre des données causant des tâches retardataires en utilisant l'analyse de partition et les utilitaires de détection de skew.

Essayez ces prompts

Configuration Spark de base
Aidez-moi �� configurer une session Spark pour une tâche ETL de production traitant 500 Go de données par jour. Quels paramètres dois-je utiliser pour le partitionnement et la mémoire ?
Problème de performance de jointure
Ma jointure entre une table de 5 To et une table de recherche de 5 Mo est extrêmement lente. Comment puis-je l'optimiser ?
Débogage du déséquilibre de données
Certaines tâches de mon opération groupBy prennent 10x plus de temps que d'autres. Aidez-moi à détecter et corriger le déséquilibre de données dans ma tâche Spark.
Optimisation complète de pipeline
Examinez mon pipeline Spark : lire 1 To Parquet, joindre 3 tables, agréger par date et région, écrire une sortie partitionnée. Fournissez une stratégie d'optimisation complète incluant AQE, la mémoire et les paramètres de shuffle.

Bonnes pratiques

  • Activer Adaptive Query Execution (AQE) pour la fusion automatique des partitions et la gestion du déséquilibre
  • Utiliser des broadcast joins pour les tables de moins de 50 Mo pour éliminer la surcharge de shuffle
  • Dimensionner correctement les partitions à 128 Mo-256 Mo pour un parallélisme optimal sans surcharge de planification

Éviter

  • Utiliser collect() sur des DataFrames volumineux provoquant des erreurs OOM du driver
  • Sur-cacher les DataFrames qui ne sont utilisés qu'une seule fois, gaspillant la mémoire
  • Ignorer le déséquilibre des données qui cause des tâches retardataires et des dépassements de délai des tâches

Foire aux questions

Quelle est la taille optimale de partition pour Spark ?
128 Mo à 256 Mo par partition offre le meilleur équilibre entre parallélisme et surcharge de planification des tâches. Trop peu de partitions causent une sous-utilisation ; trop nombreuses augmentent la surcharge de planification.
Quand dois-je utiliser cache() vs persist() ?
Utilisez cache() pour un stockage simple en mémoire. Utilisez persist() avec un StorageLevel spécifique lorsque vous avez besoin du débordement sur disque (MEMORY_AND_DISK) ou de la sérialisation (MEMORY_ONLY_SER) pour l'efficacité de la mémoire.
Comment savoir si ma tâche a un déséquilibre de données ?
Vérifiez l'interface utilisateur Spark pour les tâches avec une durée nettement plus longue que la moyenne. Un ratio de skew (temps de tâche max/moyen) supérieur à 2x indique un skew problématique nécessitant un salting ou AQE.
Qu'est-ce qu'Adaptive Query Execution (AQE) ?
AQE optimise automatiquement les requêtes au moment de l'exécution en fusionnant les partitions, gérant les skew joins et optimisant les agrégats. Activez avec spark.sql.adaptive.enabled=true (Spark 3.0+).
Dois-je utiliser Parquet ou Delta Lake ?
Delta Lake s'appuie sur Parquet avec des transactions ACID, l'application de schéma et le voyage dans le temps. Utilisez Delta pour les charges de travail de production nécessitant une fiabilité ; Parquet pour les charges de travail simples à lecture intensive.
Comment puis-je réduire la pression mémoire du shuffle ?
Activez la compression shuffle (spark.shuffle.compress=true), utilisez AQE pour réduire les partitions, pré-agrégez avant les transformations larges et augmentez spark.memory.fraction si des débordements se produisent.

Détails du développeur

Structure de fichiers

📄 SKILL.md