Le pipeline se termine en vert, sans une seule erreur, et le fichier de sortie contient quarante mille lignes au lieu de trente-huit mille. Ou bien il s’exécutait en douze secondes la semaine dernière et il en met maintenant quatre minutes. Dans les deux cas, le réflexe le plus répandu consiste à semer des transforms Write to log un peu partout, à relancer, puis à tout commenter avant de livrer.

Apache Hop propose beaucoup mieux. Entre les métriques par transform, le mode Preview & debug avec condition d’arrêt, les niveaux de log gradués et la perspective Execution Information, vous disposez d’un véritable outillage d’observation, en développement comme en production.

Prérequis

1. Commencer par les métriques, pas par les logs

Après chaque exécution dans Hop GUI, le panneau Execution Results s’ouvre en bas de la fenêtre avec deux onglets : Transform Metrics et Logging. La plupart des développeurs vont directement au second. C’est une erreur de méthode : le premier répond bien plus vite à la question « où le compte de lignes dérape-t-il ? ».

Métrique Signification
Input Lignes lues depuis une source externe
Read Lignes reçues du transform précédent
Written Lignes envoyées au transform suivant
Output Lignes écrites vers une cible externe
Rejected Lignes détournées vers un transform de gestion d’erreurs
Errors Erreurs non détournées, signalées par un triangle rouge
Duration Durée d’exécution du transform
Speed Lignes par seconde, soit les lignes traitées divisées par la durée

Deux lectures sont particulièrement utiles. Comparez d’abord Read et Written transform par transform : l’endroit où le nombre de lignes gonfle brutalement est presque toujours une jointure ou un lookup qui ramène plusieurs correspondances là où vous en attendiez une seule. Repérez ensuite le transform le plus lent via Speed et Duration : c’est le goulot d’étranglement, et le seul qu’il soit rentable d’optimiser.

Le panneau propose aussi Buffers Input et Buffers Output, supérieures à zéro uniquement pendant l’exécution. Un tampon de sortie constamment plein devant un transform signifie que celui-ci n’absorbe pas le débit de son prédécesseur : c’est l’indicateur le plus direct de la cause d’un ralentissement. Le moteur local affiche ces métriques en temps réel, ce que les autres moteurs ne font pas nécessairement.

2. S’arrêter exactement sur la ligne fautive

Quand les métriques ont désigné le transform suspect, il faut regarder les données. C’est le rôle du mode Preview & debug, accessible depuis l’icône de preview de la barre d’outils, par le menu Run puis Preview & debug, ou par l’entrée Preview & debug output du menu contextuel d’un transform.

Dans la boîte de dialogue, vous sélectionnez le transform à observer puis renseignez Retrieve first rows, le nombre de lignes à collecter. L’option décisive se trouve juste en dessous : Pause on breakpoint, assortie d’une condition. Le pipeline s’interrompt dès qu’une ligne satisfait cette condition, et les lignes collectées s’affichent dans la fenêtre de preview. Quick Launch démarre l’inspection, Configure permet de changer de configuration d’exécution au préalable.

C’est toute la différence entre « j’inspecte les cent premières lignes en espérant y trouver le problème » et « je m’arrête sur la ligne dont le code client est vide ». Sur plusieurs millions de lignes où l’anomalie concerne trois enregistrements, cette option fait gagner des heures.

3. Doser le niveau de log

Les logs restent indispensables, à condition de choisir le bon niveau. Hop en définit sept, du moins au plus verbeux : NOTHING, ERROR, MINIMAL, BASIC, DETAILED, DEBUG, ROWLEVEL. BASIC est le niveau standard, concis et informatif ; DETAILED expose ce qui se passe en coulisses ; DEBUG ajoute les valeurs précises ; ROWLEVEL rapporte les valeurs pour chaque ligne.

La règle pratique : DETAILED pour comprendre un comportement d’ensemble, ROWLEVEL uniquement sur un échantillon réduit, jamais sur un pipeline de production complet. En ligne de commande, le niveau se passe à hop-run avec l’option -l (forme longue --level) :

./hop-run.sh \
  --project=mon-projet \
  --environment=dev \
  --runconfig=local \
  --file='${PROJECT_HOME}/pipelines/chargement-ventes.hpl' \
  --parameters=DATE_DEBUT=2026-10-01,DATE_FIN=2026-10-19 \
  --level=DETAILED \
  --logfile=/var/log/hop/chargement-ventes.log

L’option -lf / --logfile indique le fichier dans lequel Hop Run écrit le log console : préférez-la à une redirection shell, elle survit aux changements d’orchestrateur. Pensez aussi à -o / --printoptions, qui affiche les options réellement prises en compte, précieux quand un paramètre semble ignoré. Un détail de vocabulaire : la documentation de hop-run liste DEBUG là où l’interface graphique affiche Debugging — c’est le même niveau.

4. Garder la trace de ce qui s’est exécuté

Les outils précédents sont interactifs : ils supposent que vous soyez devant l’écran au moment du problème. Pour les exécutions planifiées, Hop propose le type de métadonnées Execution Information Location, qui indique où envoyer les informations d’exécution. Celles-ci sont ensuite consultables dans la perspective Execution Information.

Une location se configure avec un Name, une Description et trois paramètres de cadence : Data logging delay (ms) (2000 par défaut), Data logging interval (ms) (5000) et Data logging size (rows) (1000). Le champ Location type choisit le plugin d’écriture :

Pour le type base de données, l’option Show table and indexes DDL génère les instructions CREATE TABLE et CREATE INDEX adaptées à votre dialecte sans les exécuter : vous devez les lancer vous-même avant d’écrire des données.

Une location s’attache ensuite à une configuration d’exécution de pipeline, dont les options comprennent Execution information location et Execution data profile aux côtés de Engine Type. Vous pouvez donc avoir une configuration de développement sans location et une configuration de production qui archive son historique.

5. Profiler les données, pas seulement l’exécution

Le type de métadonnées Execution Data Profile construit des profils de données au fil de leur passage dans les pipelines. Vous y sélectionnez un ou plusieurs Data Samplers to use :

L’intérêt est considérable pour une anomalie intermittente : chaque exécution archive le nombre de valeurs nulles et les bornes de chaque champ, et vous comparez le profil de l’exécution fautive avec celui de la veille. Attention, Last transforms only est actif par défaut et limite le profilage aux transforms terminaux : désactivez-le pour profiler des étapes intermédiaires.

6. Observer un pipeline sans le modifier

Reste un cas délicat : surveiller en continu la sortie d’un pipeline sans y toucher. Le type de métadonnées Pipeline Probe envoie les lignes de sortie d’un pipeline vers un autre pipeline, qui peut alors les traiter pour du contrôle qualité, du profilage ou de la traçabilité. Quatre champs suffisent : Name, Enabled (vrai par défaut), Pipeline executed to capture logging — le pipeline récepteur, qui commence par un transform Pipeline Data Probe — et Capture output of the following transforms.

Aucune modification du pipeline surveillé n’est nécessaire : vous ajoutez une surveillance qualité à un pipeline déjà livré, puis la retirez en basculant Enabled, sans toucher au fichier .hpl ni repasser par la chaîne d’intégration. Le projet samples fourni avec Hop contient un exemple complet autour de la métadonnée pipeline-probe-example.

Ce que vous avez gagné

Vous disposez d’une démarche en quatre temps plutôt que d’un réflexe unique. Les métriques par transform localisent le problème sans lire une ligne de log. Preview & debug avec condition d’arrêt vous amène sur la donnée fautive. Les niveaux de log et les options de hop-run rendent les exécutions non interactives analysables après coup. Enfin, Execution Information Location, Execution Data Profile et Pipeline Probe transforment chaque exécution planifiée en trace exploitable, sans ajouter un seul transform de débogage. Le gain réel n’est pas de corriger plus vite : c’est de ne plus avoir à reproduire un incident pour le comprendre.

Pour aller plus loin

Un projet Apache Hop ? Parlons-en.

Devis et programme détaillé sous 48 h ouvrées. Financement OPCO accompagné.

Demander un devis