在nifi中,如何调用在参数中询问输入文件和输出文件的外部程序

in nifi, how to call an external program that ask an input file and an output file in parameters

我有一个外部程序,一个电子书转换器,可以将 .epub 转换为 .txt。 该转换器请求一个文件作为输入,另一个文件作为输出,文件名在这里很重要,因为扩展名用于确定应该进行哪种转换,而且从我在测试时看到的情况来看,程序正在对输入文件执行搜索。因此,这些限制阻止了命名管道或 SDTIN 重定向的使用。

对于另一个项目,或者至少是一个 POC,我将不得不封装一个现有的工具包,这些工具的工作方式与上述相同,并在 Nifi 中重新创建工作流程。

短期内,编写自定义处理器是不可能的。

那我应该怎么做呢?

这是我找到的几个可能的解决方案:

那我该往哪个方向走,有什么建议吗?

你走在正确的轨道上。我想你可以像下面这样做一系列处理器:

  1. UpdateAttribute - 为输入和输出文件名创建属性。
  2. PutFile - 写入临时输入文件。
  3. ExecuteProcess - 运行 转换实用程序。我建议将其包装在 shell 脚本中,这样您就有机会在完成时清理临时输入文件。
  4. FetchFile - 将转换输出读入 FlowFile 内容。使用 Delete FileCompletion Strategy 清理转换后的文件。