Apache nifi 将NiFi中流文件的文件名附加到CSV文件

Apache nifi 将NiFi中流文件的文件名附加到CSV文件,apache-nifi,Apache Nifi,首先,我使用listFile处理器列出特定映射中的所有文件。然后,我想将NiFi中的流文件的${filename}附加到extern文件example.csv中。我曾想过将ExecuteScript与Python一起使用,但不知道如何使用 我尝试了以下方法: 使用两个列表处理器,一个用于地图,另一个用于.csv文件。replaceText processor将文本替换为${filename},合并内容,以及putFile(replace example.csv)。只能第一次使用。可以使用Exec

首先,我使用listFile处理器列出特定映射中的所有文件。然后,我想将NiFi中的流文件的${filename}附加到extern文件example.csv中。我曾想过将ExecuteScript与Python一起使用,但不知道如何使用

我尝试了以下方法:


使用两个列表处理器,一个用于地图,另一个用于.csv文件。replaceText processor将文本替换为
${filename}
合并内容
,以及
putFile(replace example.csv)
。只能第一次使用。

可以使用ExecuteScript处理器,并使用以下python脚本

from org.apache.nifi.processors.script import ExecuteScript 
import subprocess

flowFile = session.get()
if flowFile is not None:
     myCsvRow = flowFile.getAttribute('filename')
     fd = open('/path/to/your/map/files.csv','a')
     fd.write(myCsvRow)
     fd.close()
     session.transfer(flowFile,ExecuteScript.REL_SUCCESS)

地图文件看起来像什么?是要合并到单个csv文件中的文件名列表吗?是。例如/path/to/files/包含三个文件example1.csv、example2.csv、example3.csv。我希望这些文件名位于一个名为files.csv的文件中。为什么合并内容只在第一次工作?如果您正在覆盖examples.csv,那么您也必须阅读它,否则您只需附加到它并清除您所拥有的内容。第二行给出错误消息。通过移除,它可以完美地工作。