我正在尝试使用Apache Nifi实现下面的工作流程:
我有几个问题:
Apache Nifi中的ExecuteProcess处理器是否接收传入的流文件?
我无法为ExecuteProcess处理器提供任何incomming流文件.如果没有,有没有办法支持传入流文件?
我想通过使用ConvertJSONtoSQL处理器将我的JSON字符串转换为SQL语句.示例:JSON字符串 -
{"cpuwait":"0.0","servernamee":"mywindows","cpusys":"5.3","cpuidle":"77.6","datee":"29-SEP-2016","timee":"00:01:33","cpucpuno":"CPU01","cpuuser":"17.1"}
Run Code Online (Sandbox Code Playgroud)
oracle db中的表结构 -
CREATE TABLE cpu (
datee varchar2(15) DEFAULT NULL,
timee varchar2(10) DEFAULT NULL,
servernamee varchar2(20) DEFAULT NULL,
cpucpuno varchar2(4) DEFAULT NULL,
cpuuser varchar2(5) DEFAULT NULL,
cpusys varchar2(5) DEFAULT NULL,
cpuwait varchar2(5) DEFAULT NULL,
cpuidle varchar2(5) DEFAULT NULL
);
Run Code Online (Sandbox Code Playgroud)
用于MySQL数据库的配置:
数据库连接url:jdbc:mysql:// localhost:3306/testnifi
数据库驱动程序类名:com.mysql.jdbc.Driver
我使用(DBCP连接池)JDBC url,用户名和密码成功连接到MySQL.ConvertJSONtoSQL处理器在那里成功运行,我得到有效的sql insert语句作为输出.但是,当我尝试使用Oracle数据库时,我正在尝试
错误[计时器驱动的进程线程-6] oanpstandard.ConvertJSONToSQL java.sql.SQLException:Stream已经关闭
我对Oracle数据库连接的配置:
我搜索了谷歌中的错误但我发现在数据库表中使用长数据类型但我没有使用它时会发生此错误.我浏览了ConvertJSONtoSQL处理器的源代码(跟踪堆栈跟踪)并尝试在eclipse中实现相同的功能,我没有收到任何错误,我可以连接到数据库并进行查询.
那我的配置有什么错误吗?
Nifi版本 - 0.7.0/1.0(我两个都得到相同的错误)
java版本 - java8
Oracle DB版本 - Oracle Database 11g Express Edition
完整堆栈跟踪:
2016-10-19 07:10:06,557 ERROR [计时器驱动的进程线程-6] oanpstandard.ConvertJSONToSQL java.sql.SQLException:流已经在oracle.jdbc.driver.LongAccessor.getBytesInternal(LongAccessor.java:156)关闭)oracle.jdbc.driver.LongAccessor上的oracle.jdbc.driver.LongAccessor.getBytes(LongAccessor.java:126)~ [ojdbc6.jar:11.2.0.1.0] ~~ [ojdbc6.jar:11.2.0.1.0] …
我需要执行类似:sed'1d'simple.tsv> noHeader.tsv
这将从我的大流文件中删除第一行(> 1 GB).
问题是 - 我需要在我的流文件上执行它,所以它是:
sed'1d'myFlowFile> myFlowFile
问题是:我应该如何配置ExecuteStreamCommand处理器,以便它在我的流文件上运行命令并将其返回到我的流文件?如果sed不是最佳选择,我可以考虑采取其他方式(例如尾巴)
谢谢,米哈尔
编辑2(解决方案):
下面是最终的ExecuteStreamCommand配置,它可以完成我需要的操作(从流文件中删除第一行).@Andy - 非常感谢所有珍贵的提示.

我正试图从Avro和JSON中提取属性.我可以使用EvaluateJsonPath处理器从JSON中提取属性.我试图在Avro上做同样的事,但我不确定它是否可以实现.
这是我的流程,ExecuteSQL- > SplitAvro- >UpdateAttribute
UpdateAttribute是我想要提取属性的处理器.请在下面找到UpdateAttribute处理器的快照,
所以,我的基本问题是,我们可以从Avro中提取属性吗?如果是,请为我提供正确的方法.或者ConvertAvroToJSON在提取属性之前是否必须始终使用?
我试图了解Apache Nifi和Hortonworks Data Flow(HDF)之间的区别.
它们在能力和整体设计方面有何不同?Nifi和HDF的用例有哪些?
新的NiFi!
我正在使用InvokeHTTP nifi处理器(以此链接为例来实现我的流程http://www.tomaszezula.com/2016/10/30/nifi-and-http-post-configuration/).我目前需要进行POST以便对我正在使用的服务器进行身份验证.我能够成功发布.但是,我需要能够从执行的POST的响应中获取返回的数据.当我查看InvokeHTTPs输出到成功队列时,我看到的是我发布的主体.反正我有没有把响应放到流文件中?
提前致谢!
我正在使用HDP 2.5和NiFI-1.1.0.2.1.2.0。谁能告诉我如何从一个HDP导出和导入Nifi流到另一个HDP
我有几个Nifi进程组,我想在升级到生产之前运行集成测试.问题是我似乎无法找到有关如何操作的任何文档.
Data Provenance似乎是一个很有前途的工具来完成我想要的工作,但是,在flowfile的生命周期中,数据是发布到kafka或从文件系统发布的.结果,流文件UUID发生了变化,因此我无法使用它来查询它nifi-api.
另外,我知道Nifi提供了一个TestRunner运行测试的库,但是,这似乎只适用于通过代码而不是UI生成的处理器/处理器组.
有没有人知道用于集成和单元测试nifi进程组的工具,框架或模式.理想情况下,这将是一个解决方案,您可以编程地比较处理器/处理器组的输入/输出,而无需修改现有工作流程.
我正在尝试向api做一个非常简单的多部分表单发布。我看不到在Apache Nifi中执行此操作的任何方法,因为它似乎仅具有一个表单数据输入。在这里和Nifi论坛上似乎有很多关于此的现有问题,但是它们都没有任何答案。
我正在尝试使用invokehttp。在将其放入invokehttp之前,是否有一种方法可以构建多种表单数据?