2016-05-04 24 views
3

我使用一個簡單的Python腳本(保存爲.py文件),在Apache NiFi中有一個非常基本的ExecuteScript處理器設置,如下所示。在處理器的屬性中,我將腳本引擎設置爲python並將腳本文件設置爲此腳本的路徑。如何在Python中使用NiFi ExecuteScript處理器?

import time 

count = 0 

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

而這正是數據流程圖我做: nifi dataflow

我沒有看到輸出到日誌或PUTFILE什麼。但是,我確實看到打印語句出現在\ nifi-0.6.1 \ logs \ nifi-bootstrap.log中。我對此的瞭解目前有限。我很感謝任何知道如何使用ExecuteScript處理器的人提供的答案,或者甚至給我一個比我當前的設置更好的例子。

+0

我不知道你是否嘗試過ExecuteProcess。它應該獲取stdout並將其作爲流文件進行路由:https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi.processors.standard.ExecuteProcess/index.html – andrew

回答

10

鑑於您的腳本,我認爲一切都按預期運作。該腳本不會生成任何FlowFiles,這就是爲什麼沒有任何內容從ExecuteScript移動到其他處理器,並且發送到系統的任何內容都會在bootstrap.log中捕獲,因此這就是打印語句結束的原因。

腳本與ExecuteScript執行可以訪問一些標準對象:

  • 會議
  • 方面
  • 日誌
  • REL_FAILURE
  • REL_SUCCESS

爲了生產FlowFiles你需要調用session.cr eate()並將生成的FlowFile傳遞給REL_SUCCESS。

上的腳本處理器是馬特·伯吉斯的博客信息的最佳來源,這個頁面有一些很好的背景(使用Groovy中):

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

這其中有一個Jython例如:

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

相關問題