Apache nifi org.apache.nifi.processor.exception.FlowFileHandlingException:在此会话中未知)位于<;脚本>;第32行

Apache nifi org.apache.nifi.processor.exception.FlowFileHandlingException:在此会话中未知)位于<;脚本>;第32行,apache-nifi,jython,apache-nifi-registry,flowfile,Apache Nifi,Jython,Apache Nifi Registry,Flowfile,我已经编写了一个python脚本来比较字符串并将属性放入流文件中。 但在处理异常时,我总是遇到以下错误,并且我的流文件被ExecuteScript Processor卡在队列中,出现以下异常: 2020-02-07 18:15:26049错误[Timer Driven Process Thread-7]o.a.nifi.processors.script.ExecuteScript ExecuteScript[id=0fdb3d0f-b361-3b31-faf8-fce2dc707591]Exe

我已经编写了一个python脚本来比较字符串并将属性放入流文件中。 但在处理异常时,我总是遇到以下错误,并且我的流文件被ExecuteScript Processor卡在队列中,出现以下异常:

2020-02-07 18:15:26049错误[Timer Driven Process Thread-7]o.a.nifi.processors.script.ExecuteScript ExecuteScript[id=0fdb3d0f-b361-3b31-faf8-fce2dc707591]ExecuteScript[id=0fdb3d0f-b361-3b31-faf8-fce2dc707591]由于org.apache.nifi.processor.exception.ProcessException:javax.script.ScriptException:org.apache.nifi.processor.exception.FlowFileHandlingException:org.apache.nifi.processor.exception.FlowFileHandlingException:StandardFlowFileRecord[uuid=e263f921-8cf3-4bd0-8190-0B3864C3E78,claim=StandardContentClaim][resourceClaim=StandardResourceClaim[id=158105293097-1,container=default,section=1],offset=416137,length=1236],offset=0,name=name=test\u 1/test\u 2/my\u entity/rrp\u 26\u dec\u parent\u rrp\u child/dd\u rrp\u 26\u dec parent\u rrp\u child\u 1027102c-f97a-11aad-bpo7-bd9840e139df000.csv,size=1236]在此会话中未知(StandardSession[id=22])在第32行;回滚会话:org.apache.nifi.processor.exception.ProcessException:javax.script.ScriptException:org.apache.nifi.processor.exception.FlowFileHandlingException:org.apache.nifi.processor.exception.FlowFileHandlingException:StandardFlowFileRecord[uuid=e263f921-8cf3-4bd0-8190-0B3864CE78,claim=StandardContentClaim][resourceClaim=StandardResourceClaim[id=158105293097-1,container=default,section=1],offset=416137,length=1236],offset=0,name=name=test\u 1/test\u 2/my\u entity/rrp\u 26\u dec\u parent\u rrp\u child/dd\u rrp\u 26\u dec parent\u rrp\u child\u 1027102c-f97a-11aad-bpo7-bd9840e139df000.csv,size=1236]在此会话中未知(StandardSession[id=22])在第32行 org.apache.nifi.processor.exception.ProcessException:javax.script.ScriptException:org.apache.nifi.processor.exception.FlowFileHandlingException:org.apache.nifi.processor.exception.FlowFileHandlingException:StandardFlowFileRecord[uuid=e263f921-8cf3-4bd0-8190-0B3864C3E78,claim=StandardContentClaim[resourceClaim=StandardResourceClaim][id=158105293097-1,container=default,section=1],offset=416137,length=1236],offset=0,name=test_1/test_2/my_entity/rrp_26_dec_parent_rrp_child/dd_rrp_26_dec parent_rrp_child_1027102c-f97a-11aad-bpo7-bd9840e139df000.csv,size=1236]在本次会话(StandardProcessSession[id=22])第32行中未知 位于org.apache.nifi.processors.script.ExecuteScript.onTrigger(ExecuteScript.java:239) 位于org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1165) 位于org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:203) 位于org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117) 位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 位于java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 位于java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) 位于java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 运行(Thread.java:748)

****以下是脚本:****

enter code here
import java
import os
from java.sql import SQLException
from java.lang import Throwable
flowFile = None
try:
    flowFile = session.get()
    if flowFile != None:
        originalFilname = flowFile.getAttribute('sourceFileName')
        pathFileNameEntity = originalFilname.rsplit('_', 1)[0]
        fileNameEntity = pathFileNameEntity.rsplit('/', 1)[-1]
        realTimeEntityString = \
            flowFile.getAttribute('my.entity.name')
        for entityName in realTimeEntityString.split(','):
            ename = 'rr_' + entityName.lower()
            if ename == fileNameEntity.lower():
                cEntityName = entityName
                flowFile = session.putAttribute(flowFile,
                        'current.entity.ename', str(cEntityName))
                session.transfer(flowFile, REL_SUCCESS)
            else:
                flowFile = session.putAttribute(flowFile, 'errorMessage'
                        , 'Issue with RT Entity Names')
                session.transfer(flowFile, REL_FAILURE)
except Exception, e:

    if flowFile != None:
        flowFile = session.putAttribute(flowFile, 'errorMessage',
                str(e))
    session.transfer(flowFile, REL_FAILURE)
except Throwable, e:

    if flowFile != None:
        flowFile = session.putAttribute(flowFile, 'errorMessage',
                str(e))
    session.transfer(flowFile, REL_FAILURE)

有人能帮我理解为什么即使没有发生异常,它也无法进入except块。是语法错误吗?

代码中有一些错误。在第36行,您将文件传输到failure,即使它是
None
。在第20行和第24行,您试图在循环中传输相同的文件关系…可以传输一个f在某个地方只有一次低文件!嗨,我会处理第36行的问题。但我不理解你的说法“在第20行和第24行,你试图在一个循环中传输相同的文件关系…可能只在某个地方传输一次流文件!”。事实上,如果条件匹配,我需要传输属性为“cEntityName”的流文件,否则我想将其发送到失败。循环存在的原因是,我正在获取逗号分隔的字符串列表,需要将其与字符串集进行比较。这就是我使用for循环的原因。您不能多次传输同一个流文件。但是您对同一个流文件进行
session.transfer
循环。谢谢@dagget。解决了我的问题。