apache-nifi - PutFile 追加文件

标签 apache-nifi

Nifi的新手!

我想知道 nifi 是否有办法使用诸如“PutFile”之类的处理器并将其写入一个文件(将数据附加到此文件,或覆盖此文件中的数据)-而不是创建多个不同的文件?是否需要使用另一个处理器来完成此操作?

最佳答案

对于那些不想覆盖文件中的数据但想追加数据的人 .

使用 ExecuteStreamCommand 处理器附加到单个文件 :

putFile 处理器无法实现,但您可以使用 ExecuteStreamCommand处理器来实现这一点。

在命令参数中放置要记录的属性,以分隔符分隔${aatr1};${aatr2};${attr3}
在命令路径中输入 bash 脚本的绝对路径:/path/logger.sh

logger.sh :

#!/bin/bash
echo "$1|$2|$3">> /path/attributes.log

attibutres.log 将逐行附加三个属性。确保 bash 脚本可以通过 nifi 执行。

做一个 chmod 777 logger.sh
使用 ExecuteScript 处理器附加到单个文件 :

试试这个 ECMA 脚本:
var flowFile = session.get();
var File = Java.type("java.io.RandomAccessFile");
if (flowFile != null) {
    var filename = flowFile.getAttribute("filename");
    /// write to file
    var filePath = "/path/attributes.log" ;
    flowFile = session.putAttribute(flowFile, "filePath", filePath);
     var file = new File(filePath, "rws");
     file.seek(file.length());
        file.write(filename.getBytes());
        file.write("\n".getBytes());
        file.close();
    // Finish by transferring the FlowFile to an output relationship
    session.transfer(flowFile, REL_SUCCESS);
}

关于apache-nifi - PutFile 追加文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37530121/

相关文章:

ssl - 使用 ubuntu 将 .password 文件添加到 .p12 文件

apache-nifi - Apache NiFi 用于将数据从 RDMBS 导入 HDFS - 与 SQOOP 的性能比较

apache-nifi - JOLT 转换 Json 数组,同时保持数组结构

hortonworks-data-platform - 拆分文本处理器中异常的数组边界

ssl - 发送数据时NIFI 1.8 Site-to-Site SSLHandshakeException

docker - Nifi : Could not write to StandardFlowfileRecord 中的错误

apache-nifi - Apache Nifi : How I can know or check that all flow files have been processed

regex - 是否可以从 NiFi 中的 CSV 文件标题名称中删除空格?

python - 如何在 Nifi 中将 pandas 数据帧从一个处理器传递到另一个处理器?

apache-nifi - Nifi - 如何将 XML 整个内容插入 JSON 属性