首页 文章

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

提问于
浏览
1

我有一个外部程序,一个电子书转换器,将.epub转换为.txt . 这个转换器请求一个文件作为输入,另一个文件作为输出,文件名在这里很重要,因为扩展用于确定应该进行哪个转换,也是从我在测试时看到的,程序在输入文件上执行搜索 . 因此,这些禁令阻止使用命名管道或SDTIN重定向 .

对于另一个项目,或者至少是一个POC,我将必须封装一个现有的工具包,其工作方式与上面相同,并重新创建Nifi之间的工作流程 .

从短期来看,编写自定义处理器是不可能的 .

那我该怎么办呢?

以下是我发现的几种可能的解决方案:

  • 创建一个PutFile处理器,将文件放在临时位置,用executeStreamCommand链接它,执行外部命令并将输出放在临时位置并用fetchFileProcessor链接 . 但这里的问题可能是我必须找到一种清理临时文件的方法 .

  • 另一个解决方案是创建一个与ExecuteScript一起使用的脚本来执行以下操作:使用基于属性的文件名将流文件写入磁盘,执行外部命令,将输出文件读取到流文件并执行一些清理 . 但是从我发现的情况来看,从这个处理器写入磁盘并不容易,对吧?

那么我应该走哪条路,有什么建议吗?

1 回答

  • 2

    你走在正确的轨道上 . 我想你可以做一系列处理器,如下所示:

    • UpdateAttribute - 为输入和输出文件名创建属性 .

    • PutFile - 写入临时输入文件 .

    • ExecuteProcess - 运行转换实用程序 . 我建议将其包装在shell脚本中,这样您就可以在完成后清理临时输入文件 .

    • FetchFile - 将转换输出读入FlowFile内容 . 使用 Delete FileDelete File 来清理转换后的文件 .

相关问题