如何在Python中使用NiFi ExecuteScript处理器?

时间:2016-05-04 22:44:48

标签: python etl apache-nifi

我在Apache NiFi中有一个非常基本的ExecuteScript处理器设置,带有一个简单的Python脚本(保存为.py文件),如下所示。在处理器的属性中,我将脚本引擎设置为python,将脚本文件设置为此脚本的路径。

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处理器的人的答案,或者甚至比我当前的设置更好的例子。

1 个答案:

答案 0 :(得分:12)

鉴于您的脚本,我认为一切都按预期运行。该脚本不生成任何FlowFiles,这就是为什么没有任何东西从ExecuteScript移动到其他处理器,并且发送到系统的任何内容都在bootstrap.log中捕获,这就是print语句结束的原因。

使用ExecuteScript执行的脚本可以访问一些标准对象:

  • 会话
  • 上下文
  • 日志
  • REL_FAILURE
  • REL_SUCCESS

为了生成FlowFiles,您需要调用session.create()并获取生成的FlowFile并将其传输到REL_SUCCESS。

脚本处理器的最佳信息来源是Matt Burgess的博客,这个页面有一些很好的背景(使用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