当前位置: 首页 > 知识库问答 >
问题:

Apache Nifi的AbstractProcessor的onTrigger()方法中的零流文件

叶越
2023-03-14
public class MyCustomProc extends AbstractProcessor {

    @Override
    public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException {

        List<FlowFile> flowFiles = session.get(5000);
        if (flowFiles == null || flowFiles.size() == 0) {
            return;
        }
        //...

flowfiles原来大小为零!!!我无法猜测我应该向哪个方向检查,以找出为什么会发生这种情况。有什么提示我该如何诊断吗?

编辑

斯塔克特莱斯

2019-05-02 18:08:09,456 ERROR [Timer-Driven Process Thread-10] c.c.product.module.submodule.MyCustomProcessor MyCustomProcessor[id=016a1008-8956-1dbf-bd66-993e0ce98668] MyCustomProcessor[id=016a1008-8956-1dbf-bd66-993e0ce98668] failed to process due to org.apache.nifi.processor.exception.FlowFileHandlingException: StandardFlowFileRecord[uuid=408fbb3d-7cc2-48bc-be8f-6d0afdbddaf2,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[id=1556800468726-1, container=default, section=1], offset=261, length=591447],offset=0,name=188149730353200,size=591447] transfer relationship not specified; rolling back session: {}
org.apache.nifi.processor.exception.FlowFileHandlingException: StandardFlowFileRecord[uuid=408fbb3d-7cc2-48bc-be8f-6d0afdbddaf2,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[id=1556800468726-1, container=default, section=1], offset=261, length=591447],offset=0,name=188149730353200,size=591447] transfer relationship not specified
    at org.apache.nifi.controller.repository.StandardProcessSession.checkpoint(StandardProcessSession.java:251)
    at org.apache.nifi.controller.repository.StandardProcessSession.commit(StandardProcessSession.java:321)
    at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:28)
    at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1122)
    at org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:147)
    at org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47)
    at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:128)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

PS2:我在apps.log中得到以下错误,但我不确定这是否是问题的根源:

2019-05-02 18:17:32,394 ERROR [Timer-Driven Process Thread-4] o.a.nifi.groups.StandardProcessGroup Unable to synchronize StandardProcessGroup[identifier=d25747e6-719e-3ed9-c6c5-56794af6555c] with Flow Registry because Process Group was placed under Version Control using Flow Registry with identifier 80016ab0-bfab-152b-ffff-ffffc441867c but cannot find any Flow Registry with this identifier

共有1个答案

司寇嘉茂
2023-03-14

有时获得零流文件是正常的行为,这就是为什么处理器会像您在开始时那样进行检查。

FlowFileHandlingException表示流文件是从会话中获得的,无论是从get还是从create中获得的,该流文件没有被转移到任何地方,也没有被删除,因此基本上是下落不明的。如果只在if语句的开头返回,就不会发生这种情况,因此处理器代码的其余部分正在执行并产生此错误。您没有提供其余的代码,所以我们看不到问题。

第二个问题是相当不言自明的。您有一个处于版本控制下的进程组,但用于启动版本控制的注册表客户端不知何故已不存在。我不知道您是如何创建此场景的,因为我相信UI/API不会允许您删除具有受版本控制的活动流的注册表客户端,但您应该能够停止对进程组的版本控制。

 类似资料:
  • 我正在为一个断断续续变化的sqlite数据库编写一个备份脚本。现在是这样的: 目前数据库的重量仅为20MB,因此在运行并将整个文件读入内存时(在检测到更改时执行两次)不会太费力,但我不想等到这成为一个问题。 使用Bashscript术语进行这种流管道的正确方法是什么?

  • 本文向大家介绍C#使用文件流读取文件的方法,包括了C#使用文件流读取文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#使用文件流读取文件的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 我在用流星做一个消息应用程序。出于安全原因,我禁用了从客户端调用的任何插入/更新/删除。现在插入消息的唯一方法是使用方法。 如果是这种情况,我将不得不在函数上包含额外的参数,这将使它更加不安全。 我可能不明白这里的方法。

  • 问题内容: IEEE754支持负零。但是这段代码 输出 我本来期望的 浮动格式基于IEEE754的其他语言可让您创建负零文字 Java的: C# : Javascript: 但是我在Go中找不到等效项。 您如何在go中编写一个负零文字? 问题答案: 有一个已注册的问题。 碰巧提供了一种解决方案: 还不错,因为它显然引用了定义的标准函数。 但这意味着您需要导入一个软件包,而对于(当然较小且很少见的)

  • 本文向大家介绍Java基于IO流读取文件的方法,包括了Java基于IO流读取文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java基于IO流读取文件的方法。分享给大家供大家参考,具体如下: 希望本文所述对大家Java程序设计有所帮助。

  • 本文向大家介绍php发送与接收流文件的方法,包括了php发送与接收流文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php发送与接收流文件的方法。分享给大家供大家参考。具体如下: sendStreamFile.php 把文件以流的形式发送 receiveStreamFile.php 接收流文件并保存到本地 sendStreamFile.php文件: receiveStreamFi