Après avoir fait de mon mieux pour trouver des questions et des exemples précédents pertinents à cette question, et sans toujours trouver les réponses que je cherchais, j'ai pensé que je soumettrais moi-même une question.
ExecuteStreamCommand semble être le processeur parfait pour moi pour les raisons suivantes:
En un mot, ce que j'essaie de faire avec ExecuteStreamCommand est:
python3 my_script.py
)Par souci de clarté, je ne comprends pas actuellement:
J'ai rencontré divers exemples pour ExecuteScript, mais malheureusement, ceux-ci ne se traduisent pas exactement par l'utilisation de ExecuteStreamCommand.
Merci d'avance. Tout conseil est apprécié.
D'après votre question, vous dites que vous devez appeler le script Python sans utiliser les processeurs InvokeScriptedProcessor
ou ExecuteScript
car vous ne pouvez pas utiliser Jython. Étant donné cette exigence, vous devriez toujours être en mesure d'atteindre votre objectif. Bien que cela nécessite une certaine familiarité avec le cadre, toutes ces informations proviennent de la documentation ExecuteStreamCommand
.
Votre section "Je ne comprends pas actuellement":
Comment appeler le script python (à partir du processeur ExecuteStreamCommand)
Dans votre processeur ExecuteStreamCommand
, configurez les arguments de commande et Chemin de commande propriétés avec les éléments suivants:
any flags or args, delimited by ;
(c'est à dire. /path/to/my_script.py
)/path/to/python3
Comment charger le FlowFile depuis Python
ExecuteStreamCommand
. Votre script n'a pas besoin de connaître "flowfiles" dans ce cas. Si vous utilisiez plutôt les processeurs ISP
ou ES
, vous pouvez utiliser l'API de script NiFi qui est automatiquement injectée dans les scripts pour créer ou mettre à jour l'objet de fichier de flux.0
) NiFi va générer un nouveau fichier de flux avec ce contenu. Si vous définissez la propriété Attribut de destination de sortie de ESC
sur une valeur non nulle, NiFi mettra à jour le flux existant avec un nouveau attribut du même nom contenant la sortie du script.