Entrée/sortie élevée pour une étape Spark
Ensuite, examinez les statistiques d’E/S de l’étape la plus longue :
Qu’est-ce qu’une E/S élevée ?
Quelle quantité de données doit être dans une colonne d’E/S considérée comme élevée ? Pour déterminer cela, commencez par le nombre le plus élevé dans l’une des colonnes données. Considérez ensuite le nombre total de cœurs de processeur dont vous disposez sur tous nos workers. En règle générale, chaque cœur peut lire et écrire environ 3 Mo par seconde.
Divisez votre plus grande colonne d’E/S par le nombre de cœurs de travail du cluster, puis divisez-le par secondes. Si le résultat est d’environ 3 Mo, vous êtes probablement limité par les E/S. Il s’agirait d’E/S élevées.
Entrée élevée
Si vous voyez beaucoup d’entrées dans votre étape, cela signifie que vous passez beaucoup de temps à lire des données. Tout d’abord, identifiez les données que cette étape lit. Consultez Identification d’une lecture coûteuse dans le DAG de Spark.
Après avoir identifié les données spécifiques, voici quelques approches pour accélérer vos lectures :
- Utilisez Delta.
- Essayez Photon. Cela peut grandement améliorer la vitesse de lecture, surtout pour les tables larges.
- Faites en sorte que votre requête soit plus sélective afin qu’elle n’ait pas besoin de lire autant de données.
- Reconsidérez la disposition de vos données afin que le mécanisme de data skipping soit plus efficace.
- Si vous lisez les mêmes données plusieurs fois, utilisez le cache delta.
- Si vous effectuez une jointure, envisagez d'essayer de faire fonctionner la fonction DFP.
Sortie élevée
Si vous voyez beaucoup de sorties depuis votre étape, cela signifie que vous passez beaucoup de temps à écrire des données. Voici quelques approches pour résoudre ce problème :
- Réécrivez-vous de nombreuses données ? Consultez Comment déterminer si Spark réécrit des données pour le vérifier. Si vous réécrivez de nombreuses données :
- Vérifiez si vous disposez d’une fusion qui doit être optimisée.
- Utilisez des vecteurs de suppression pour marquer les lignes existantes comme supprimées ou modifiées sans réécrire le fichier Parquet.
- Activez Photon si ce n’est pas déjà fait. Photon peut aider beaucoup avec la vitesse d’écriture.
Lecture aléatoire élevée
Si vous n’êtes pas familiarisé avec le terme « aléatoire », c’est le moment d’apprendre.
Aucune E/S élevée
Si vous ne voyez pas d’E/S élevées dans l’une des colonnes, vous devez aller plus loin. Consultez Étape Spark lente avec peu d’E/S.