Apache nifi 在nifi中,如何调用在参数中询问输入文件和输出文件的外部程序
我有一个外部程序,一个电子书转换器,将.epub转换为.txt。 这个转换器请求一个文件作为输入,另一个文件作为输出,文件名在这里很重要,因为扩展名用于确定应该进行哪种转换,同样根据我在测试时看到的情况,程序正在对输入文件执行寻道。因此,这些合同禁止使用命名管道或SDTIN重定向 对于另一个项目,或者至少是一个POC,我必须封装一个与上面工作方式相同的现有工具包,并在Nifi中更好地重新创建工作流 在短期内,编写自定义处理器是不可能的 那我该怎么做呢 以下是我发现的几种可能的解决方案:Apache nifi 在nifi中,如何调用在参数中询问输入文件和输出文件的外部程序,apache-nifi,Apache Nifi,我有一个外部程序,一个电子书转换器,将.epub转换为.txt。 这个转换器请求一个文件作为输入,另一个文件作为输出,文件名在这里很重要,因为扩展名用于确定应该进行哪种转换,同样根据我在测试时看到的情况,程序正在对输入文件执行寻道。因此,这些合同禁止使用命名管道或SDTIN重定向 对于另一个项目,或者至少是一个POC,我必须封装一个与上面工作方式相同的现有工具包,并在Nifi中更好地重新创建工作流 在短期内,编写自定义处理器是不可能的 那我该怎么做呢 以下是我发现的几种可能的解决方案: 创建一
- 创建一个PutFile处理器,该处理器将把文件放在一个临时位置,用一个executeStreamCommand链接它,executeStreamCommand将执行外部命令,把输出放在一个临时位置,并用一个fetchFileProcessor链接它。但这里的问题可能是,我必须找到一种方法来清理临时文件
- 另一种解决方案是创建一个脚本,与ExecuteScript一起使用,以执行以下操作:基于属性使用文件名将流文件写入磁盘,执行外部命令,将输出文件读取到流文件并执行一些清理。但从我发现的情况来看,从这个处理器写入磁盘并不是那么容易,对吗
那么我该往哪个方向走,有什么建议吗?你走对了。我认为您可以执行如下一系列处理器:
删除文件
的完成策略
清理转换后的文件谢谢,这就是我的结尾,我刚刚在
ExecuteProcess
的oputput中添加了第二个FetchFile
,并将完成策略设置为Delete File
以清理临时输入文件。这似乎不再有效(Nifi 1.6.0)-或者至少不会在一个链中起作用-因为ExecuteProcess
被标记“源”,不接受入站链接。ExecuteStreamCommand
可能在这种情况下工作。