【问题标题】:How can I pass a pandas dataframe in Nifi from processor to processor?如何将 Nifi 中的 pandas 数据帧从处理器传递到处理器?
【发布时间】:2020-05-16 03:50:41
【问题描述】:

使用 Nifi,我想:

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

这可能吗?如果有,怎么做?

换一种说法:

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

【问题讨论】:

    标签: python pandas dataframe apache-nifi


    【解决方案1】:

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

    Python 包装脚本:

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多