Apache nifi 将NiFi中流文件的文件名附加到CSV文件
首先,我使用listFile处理器列出特定映射中的所有文件。然后,我想将NiFi中的流文件的${filename}附加到extern文件example.csv中。我曾想过将ExecuteScript与Python一起使用,但不知道如何使用 我尝试了以下方法: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
使用两个列表处理器,一个用于地图,另一个用于.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,那么您也必须阅读它,否则您只需附加到它并清除您所拥有的内容。第二行给出错误消息。通过移除,它可以完美地工作。