Question

Je travaille avec Pentaho Data Integration (alias Kettle) et j'ai plusieurs transformations, appelons-les A, B, C, D, E.B dépend de A, D dépend de C et E dépend de B et D.Dans un travail, j'aimerais exécuter A, B et C, D en parallèle :

           -> A -> B _
    Start<            \
           -> C -> D----> E

où A et C fonctionnent en parallèle.Existe-t-il un moyen d'exécuter E uniquement si B ET D ont-ils réussi ?À l'heure actuelle, en regardant les métriques du Job, E est exécuté dès que B OU D sont terminés.

Était-ce utile?

La solution

Je viens de trouver http://forums.pentaho.org/showthread.php? t = 75425 et il semble que ce n'est pas facilement possible d'obtenir ce que je veux.

Autres conseils

Vous pouvez faire quelque chose comme ceci :

        /--=--[job]----[set var J1=1]---\ 
[start]----=--[Job]----[set var J2=1]----+--[jscriptstep]--(ok)-->[next steps]
        \--=--[Job]----[set var J3=1]---/        \
                                                 (x)
                                                   \
                                                  [Write to log]

L'étape JS avec :

J1= parent_job.getVariable("J1");
J2= parent_job.getVariable("J2");
J3= parent_job.getVariable("J3");
(J1*J2*J3)==1;

L'étape d'écriture dans le journal est facultative et je n'enregistrais pas dans le journal une erreur marquée en rouge, en utilisant le message du journal :

" En attente :${J1}-${J2}-${J3}-${J4}-${J5} "

Je peux donc voir quoi et quand chaque étape se termine grâce au journal.

Je crois que cela peut être fait, mais je n'ai pas d'emplois assez grand pour tester vraiment ce puits, et il est maladroit. Fondamentalement, vous aurez besoin de 4 emplois distincts en plus de vos emplois A, B, C, D, et E. Appelons-les Job Control, Job A_B, Job C_D, et en parallèle l'emploi.

Vous les configurer comme ceci:

Control Job: start -> Parallel Jobs -> E
Parallel Jobs:       -> Job A_B
               start<           (Set Start step to run next jobs in parallel)
                     -> Job C_D
Job A_B: start -> A -> B
Job C_D: start -> C -> D

La clé est que A -> B et C -> D doivent être dans leur propre étape de travail pour maintenir la dépendance. Alors parallèle Jobs fait que les deux chemins parallèles ont terminé avant de permettre le contrôle de procéder à E.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top