如何将 Nifi 中的 Pandas 数据帧从处理器传递到处理器?

Rob*_*bie 2 python dataframe pandas apache-nifi

使用 Nifi,我想:

  1. 运行一个导出 Pandas 数据框的 Python 脚本
  2. 例如通过 ExecuteStreamCommand 将它发送到各种即插即用的 Python 脚本,这些脚本输入和输出 Pandas 数据帧,不知道它们是通过 Nifi 运行的,并且我无法修改它以使用 STDIN/STDOUT 而不是 Pandas。
  3. 传递输出数据帧以进行进一步处理。

这可能吗?如果是这样,如何?

换一种方式:

  1. 第一个脚本:flowfile -> pandas
  2. 许多脚本:用熊猫做事
  3. 最后一个脚本:pandas -> flowfile

And*_*ndy 6

NiFi 的ExecuteScript支持 Jython,Jython 不允许 Python 原生库(pandas 是原生库),所以你不能直接在 NiFi 中执行这个动作。我建议您编写一个完整的 Python shell 脚本,该脚本执行以下操作并使用ExecuteStreamCommand处理器从 NiFi 调用它:

Python包装脚本:

  1. 接受来自STDIN(这将是流文件内容)的输入
    • 您还可以使用ESC处理器的“命令参数”属性将流文件属性作为参数放在命令行上
  2. STDIN输入转换为熊猫数据框
  3. 在不了解 NiFi 的任意 Python 脚本之间传递数据帧
  4. 将最终数据帧输出为 STDOUT

这将允许传入的流文件内容发送到此包装器脚本,使用包含的脚本进行所有内部修改,然后将输出从STDOUT回转换为流文件内容。