2016-05-04 6 views
3

Ich habe eine sehr grundlegende Einrichtung des ExecuteScript-Prozessors in Apache NiFi mit einem einfachen Python-Skript (gespeichert als .py-Datei) wie hier gezeigt. In den Eigenschaften des Prozessors setze ich die Script Engine auf Python und Script File auf den Pfad dieses Skripts.Wie verwende ich den NiFi ExecuteScript Prozessor mit Python?

import time 

count = 0 

while(count < 20): 
    print "The counter says: ", count 
    count = count + 1 
    time.sleep(.1) 

Und das ist das Datenflußdiagramm ich gemacht: nifi dataflow

Ich sehe in dem Protokoll oder die PutFile ausgegeben nicht alles. Ich sehe jedoch, dass die Druckanweisungen in \ nifi-0.6.1 \ logs \ nifi-bootstrap.log erscheinen. Mein Wissen darüber ist derzeit begrenzt. Ich würde die Antworten von jedem, der den ExecuteScript-Prozessor zu benutzen weiß, oder sogar ein besseres Beispiel als mein aktuelles Setup zu schätzen wissen.

+0

Ich frage mich, ob Sie den ExecuteProcess versucht haben. Es sollte das stdout ergreifen und es als Flowfile leiten: https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi.processors.standard.ExecuteProcess/index.html – andrew

Antwort

10

Angesichts Ihrer Skript, denke ich, alles funktioniert wie erwartet. Das Skript erzeugt keine FlowFiles, weshalb sich nichts von ExecuteScript zu den anderen Prozessoren bewegt, und alles, was an Systemout gesendet wird, wird in der bootstrap.log erfasst, weshalb die print-Anweisung dort endet.

Script mit erhalten Sie Zugriff auf einige Standardobjekte in ExecuteScript Ausführung:

  • Sitzung
  • Kontext
  • log
  • REL_FAILURE
  • REL_SUCCESS

Um zu produzieren FlowFiles, die Sie benötigen, rufen Sie session.cr auf eate() und nimm das resultierende FlowFile und übertrage es auf REL_SUCCESS.

Die beste Quelle für Informationen über die Scripting-Prozessoren Blog Matt Burgess hat diese Seite einige gute Hintergrund (verwendet Groovy):

http://funnifi.blogspot.com/2016/02/executescript-processor-hello-world.html

Dieses eine Beispiel mit Jython hat:

http://funnifi.blogspot.com/2016/03/executescript-json-to-json-revisited_14.html

Verwandte Themen