在 Apache Nifi 中使用 ExecuteScript 不起作用
Using ExecuteScript in Apache Nifi not working
我在附图中显示了以下流程。我从另一个进程组收到 60 个流文件,我希望它们通过一个 Python 脚本,该脚本将使用 ExecuteScript 处理器执行。
现在的问题是我没有收到任何错误,但是 none 的流文件作为“输入”传递,甚至通过一个简单的脚本,它只是获取传入的流文件,将其删除,然后创建一个具有旧流文件属性的新文件。我在队列中有一些记录,但它们根本没有进入执行脚本处理器。
我只是用这个简单的方法来测试我是否可以成功 运行 一个 python 脚本。这是我的代码:
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback
flowFile = session.get()
attrMap = flowFile.getAttributes()
session.remove(flowFile)
newflowFile = session.create()
newflowFile = session.putAllAttributes(newflowFile, attrMap)
session.transfer(newflowFile, REL_SUCCESS)
这也是我的配置图片。其他都没有改变。
我错过了什么吗?
编辑:
设置
调度
您的代码从会话中删除传入的流文件,然后创建一个不相关的新流文件。这不是脚本应该如何操作。框架检测到脚本没有正确处理数据(传入的流文件未传输到任何关系),因此不允许它完成并导致数据丢失。
您应该对 传入的流文件进行操作,然后将它们传输到适当的关系。 Apache NiFi Developer Guide -- Common Processor Patterns and Matt Burgess' blog.
中提供了更多信息
我在附图中显示了以下流程。我从另一个进程组收到 60 个流文件,我希望它们通过一个 Python 脚本,该脚本将使用 ExecuteScript 处理器执行。
现在的问题是我没有收到任何错误,但是 none 的流文件作为“输入”传递,甚至通过一个简单的脚本,它只是获取传入的流文件,将其删除,然后创建一个具有旧流文件属性的新文件。我在队列中有一些记录,但它们根本没有进入执行脚本处理器。 我只是用这个简单的方法来测试我是否可以成功 运行 一个 python 脚本。这是我的代码:
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback
flowFile = session.get()
attrMap = flowFile.getAttributes()
session.remove(flowFile)
newflowFile = session.create()
newflowFile = session.putAllAttributes(newflowFile, attrMap)
session.transfer(newflowFile, REL_SUCCESS)
这也是我的配置图片。其他都没有改变。
我错过了什么吗?
编辑:
设置
您的代码从会话中删除传入的流文件,然后创建一个不相关的新流文件。这不是脚本应该如何操作。框架检测到脚本没有正确处理数据(传入的流文件未传输到任何关系),因此不允许它完成并导致数据丢失。
您应该对 传入的流文件进行操作,然后将它们传输到适当的关系。 Apache NiFi Developer Guide -- Common Processor Patterns and Matt Burgess' blog.
中提供了更多信息