无法在NiFi的ExecuteStreamCommand处理器中导入ioUtils的StreamCallback

时间:2019-04-25 17:39:03

标签: python apache-nifi

我正在尝试在executestreamcommand处理器中执行python代码,并试图在代码中读取/写入流文件,为此,我必须使用某些库,例如

  • 从org.apache.commons.io导入IOUtils
  • 从java.nio.charset导入StandardCharsets
  • 从org.apache.nifi.processor.io导入StreamCallback
例如库中的

但是我在executeStreamCommand中遇到了找不到模块的错误。有人知道原因吗?

1 个答案:

答案 0 :(得分:2)

ExecuteStreamCommand用于在命令行(也称为终端)上执行Shell命令(脚本,实用程序等)。 NiFi内部库不适用于在该上下文中运行的脚本,除非您明确捆绑并导入这些脚本。在这种情况下,与NiFi的互动仅限于通过STDINSTDOUT流式传输的流文件内容。有关更多详细信息,请参见this answer

如果要使用Python脚本直接从NiFi流文件中读取属性和内容并实现自定义StreamCallback,则应使用ExecuteScriptInvokeScriptedProcessor。这允许与NiFi概念进行更紧密耦合的集成,但是特别是对于Python,这意味着本地编译模块(用C编写的Python模块)不可用,因为NiFi使用Jython(与JSR-223兼容)。