如何解决关系失败?

VM *_* MP 1 hortonworks-data-platform apache-nifi

我有一个似乎正在创建FlowFiles的处理器(修改了标准处理器),但是当它转到commit()会话时,会引发异常:

2016-10-11 12:23:45,700 ERROR [计时器驱动的进程线程-6] cscprocessors.files.GetFileData [GetFileData [id = 8f5e644d-591c-4df1-8c79-feea118bd8c0]]由于{} org而无法检索文件.apache.nifi.processor.exception.FlowFileHandlingException:未指定StandardFlowFileRecord传输关系

我假设这应该表明没有可用于提交传输的连接; 但是,在init()期间注册的"成功"关系与原始处理器相同,并且成功关系out应该与另一个处理器输入连接.

任何疑难解答建议?

mat*_*tyb 5

您对标准处理器做了哪些更改?如果要在ProcessSession对象上调用方法,请确保保存从这些方法调用返回的FlowFile的最新"版本",并仅将最新版本传输到"success".

FlowFile引用是不可变的; 通常在代码中,您将看到一个初始引用,如"flowFile"指向传入的流文件(session.get()例如),然后在流文件发生变异时更新,例如flowFile = session.putAttribute(flowFile, "myAttribute", "myValue").

还要确保已将每个不同流文件的最新版本(不是对同一流文件的各种引用)转移或删除到某种关系(即使Relationship.SELF需要).如果处理器创建新的流文件,请确保传输新的流文件.如果不再需要传入流文件,请务必调用session.remove()它.

NiFi开发人员指南中有一些常见的模式和附加指南,包括测试模式; 此处理器的单元测试应该能够清除此错误(通过断言在测试期间应该将多少个流文件传输到哪个关系).