Aller au contenu principal

Spark : étapes à forte E/S

Une étape peut être lente car elle traite plus de données que le cluster ne peut lire, écrire ou mélanger dans le temps disponible. Pour corriger une étape liée aux E/S :

  • Réduisez la quantité de données traitées par l'étape.
  • Accélérez la façon dont l’étape lit et écrit les données.
  • Ajouter une capacité de compute.

Utilisez cette page après avoir écarté les biais et spill dans l'étape la plus longue. Les colonnes E/S de l'étape montrent si l'étape est limitée par les E/S et, si c'est le cas, si le goulot d'étranglement est l'entrée, la sortie ou le shuffle.

Examinez les colonnes d’E/S pour l’étape la plus longue :

Longues E/S de phase

Qu'est-ce que les E/S élevées ?​

Chaque cœur de processeur peut lire et écrire environ 3 Mo par seconde. Pour vérifier si les E/S d'une étape sont élevées, comparez son throughput par cœur avec ce taux :

  1. Trouvez la valeur la plus élevée dans les colonnes E/S de l'étape.
  2. Divisez cette valeur par le nombre total de cœurs de processeur sur tous les Worker.
  3. Divisez le résultat par la durée de l'étape en secondes.

Si le résultat est d’environ 3 Mo par seconde, l’étape peut être liée aux E/S.

Entrée élevée​

Si la colonne d'entrée est grande, l'étape passe beaucoup de temps à lire les données. Pour savoir quelle table ou quels fichiers l'étape lit, consultez Identifier une lecture coûteuse dans le DAG SQL. Ensuite, essayez ces approches pour accélérer les lectures :

Sortie élevée​

Si la colonne de sortie est volumineuse, l’étape passe beaucoup de temps à écrire des données. Essayez les approches suivantes :

Brassage élevé​

Si la colonne Lecture aléatoire ou Écriture aléatoire est volumineuse, l'étape passe beaucoup de temps à mélanger les données entre les exécuteurs pour les jointures ou les agrégations. Pour réduire le temps de shuffle, Databricks recommande de régler spark.sql.shuffle.partitions sur auto afin que Spark définisse le nombre de partitions de shuffle en fonction du plan de query et de la taille des données d'entrée. Voir Configuration d'AQE.

Pas d'E/S élevées​

Si aucune des colonnes E/S n'est grande, l'étape est lente pour une autre raison. Pour trouver la cause, voir Étape Spark lente avec peu d'E/S.