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

import time

count = 0

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

这是我制作的数据流程图:
python - 如何在Python中使用NiFi ExecuteScript处理器?-LMLPHP

我没有看到任何输出到日志或PutFile的文件。但是,我确实看到打印语句出现在\nifi-0.6.1\logs\nifi-bootstrap.log中。我对此的了解有限。我将不胜感激从任何知道如何使用ExecuteScript处理器的人那里得到的答案,甚至为我提供比当前设置更好的示例。

最佳答案

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

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

  • session
  • 上下文
  • 日志
  • 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

    关于python - 如何在Python中使用NiFi ExecuteScript处理器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37039331/

    10-10 14:05