Aller au contenu principal

Spark : étapes à forte E/S

Ensuite, examinez à nouveau les statistiques d’E/S de la plus longue étape :

Longues E/S de phase

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

Quelle quantité de données doit y avoir dans une colonne d'E/S pour être considérée comme élevée ? Pour ce faire, start d'abord par le nombre le plus élevé dans l'une des colonnes données. Ensuite, tenez compte du nombre total de cœurs de processeur dont vous disposez sur l'ensemble de nos Worker. Généralement, chaque cœur peut lire et écrire environ 3 Mo par seconde.

Divisez votre colonne d'E/S la plus grande par le nombre de cœurs worker du cluster, puis divisez cela par les secondes de durée. Si le résultat est d'environ 3 Mo, alors vous êtes probablement lié aux E/S. Cela serait une E/S élevée.

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. Voir l'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 :

Sortie élevée

Si vous voyez beaucoup de sortie de votre étape, cela signifie que vous passez beaucoup de temps à écrire des données. Voici quelques approches pour résoudre ce problème :

Brassage élevé

Databricks vous recommande de définir spark.sql.shuffle.partitions=auto pour laisser Spark choisir automatiquement le nombre de partitions de Shuffle optimales. Si vous n'êtes pas familier avec le shuffle, c'est le moment d'apprendre.

Pas d'E/S élevées

Si vous ne voyez pas un débit E/S élevé dans aucune des colonnes, alors vous devez approfondir les recherches. Voir Phase Spark lente avec peu d'E/S.