Déterminer si Spark réécrit trop de fichiers
DELETE, UPDATE et MERGE opérations sur les tables Delta Lake peuvent écrire beaucoup plus de données qu’elles n’en modifient. Sans vecteurs de suppression, la modification d’une seule ligne nécessite de réécrire l’intégralité du fichier Parquet qui la contient. Si un petit changement affecte plusieurs fichiers, l’étape d’écriture réécrit également toutes les lignes non modifiées dans ces fichiers.
Utilisez cette page lorsque l'étape la plus longue produit une sortie importante et exécute DELETE, UPDATE ou MERGE. Pour vérifier la sortie de l'étape, voir Sortie élevée.
Vérifiez l’écriture dans le DAG SQL
Pour vérifier la quantité de données écrites par l'étape d'écriture :
-
Faites défiler jusqu'en haut de la page du job et cliquez sur SQL query associée :

Le DAG SQL apparaît. Si ce n’est pas le cas, faites défiler vers le bas pour le trouver :

-
Recherchez le nœud d'écriture et vérifiez la quantité de données qu'il écrit :
-
Pour
DELETEouUPDATE, comparez la quantité de données écrites avec la quantité prévue. Si l'opération écrit beaucoup plus de données que prévu, il est possible qu'elle réécrive des données :
-
Pour
MERGE, le nœud de Merge affiche des statistiques explicites sur la quantité de données qu'il réécrit.
-
Vérifier l’historique des tables
Pour vérifier une réécriture, vérifiez les métriques de l'opération dans l'historique des tables. Pour MERGE, comparez numTargetRowsCopied avec les lignes insérées, mises à jour et supprimées. Pour DELETE et UPDATE, vérifiez numCopiedRows. Un nombre de lignes copiées beaucoup plus élevé que celui des lignes modifiées indique que l’opération a réécrit des données non modifiées. Voir Métriques des opérations.
Réduire les réécritures
Si l'opération réécrit beaucoup de données, essayez les approches suivantes :
- Activez les vecteurs de suppression. Les vecteurs de suppression marquent les lignes comme supprimées ou modifiées sans réécrire le fichier Parquet.
- Paramétrez les opérations
MERGE. Ajoutez des contraintes connues à la condition de correspondance pour réduire l'espace de recherche. Pour les autres méthodes de réglage du Merge, voir Meilleures pratiques : Delta Lake.