Apache nifi ExecutionScript输出两个不同的流文件NIFI

Apache nifi ExecutionScript输出两个不同的流文件NIFI,apache-nifi,Apache Nifi,我将executionScript与python一起使用,我有一个数据集,它可能有一些损坏的数据,我的想法是处理好的数据,并将其放在我的flowfile内容中到我的成功关系中,损坏的将它们重定向到失败关系中,我做了如下操作: for msg in messages : try : id = msg['id'] timestamp = msg['time'] value_encoded = msg['data'] hexFram

我将executionScript与python一起使用,我有一个数据集,它可能有一些损坏的数据,我的想法是处理好的数据,并将其放在我的flowfile内容中到我的成功关系中,损坏的将它们重定向到失败关系中,我做了如下操作:

for msg in messages :
   try :
        id = msg['id']
        timestamp = msg['time']
        value_encoded = msg['data']
        hexFrameType = '0x'+value_encoded[0:2]          
        matches = re.match(regex,value_encoded)
        ....
    except:
        error_catched.append(msg)

        pass

你知道我该怎么做吗?

为了回答这个问题,我假设你有一个从session.get()获取的名为“flowFile”的传入流文件。如果您只是想检查flowFile的内容,然后根据发生的错误将其路由到成功或失败,那么在成功路径中,您可以使用:

session.transfer(flowFile, REL_SUCCESS)
outputFlowFile = session.create(flowFile)
session.remove(flowFile)
在错误路径中,您可以执行以下操作:

session.transfer(flowFile, REL_FAILURE)
如果您想要新文件(可能在上面的循环中包含一个“msg”),您可以使用:

session.transfer(flowFile, REL_SUCCESS)
outputFlowFile = session.create(flowFile)
session.remove(flowFile)
使用输入流文件作为父级创建新流文件。如果要写入新的流文件,可以使用中描述的PyStreamCallback技术

如果创建新的流文件,请确保使用上述session.transfer()调用(但使用outputFlowFile而不是flowFile)将其最新版本传输到REL_SUCCESS或REL_FAILURE。此外,您还需要删除传入的流文件(因为您已经从中创建了子流文件并将其传输)。为此,您可以使用:

session.transfer(flowFile, REL_SUCCESS)
outputFlowFile = session.create(flowFile)
session.remove(flowFile)

为了回答这个问题,我假设您有一个从session.get()获得的名为“flowFile”的传入流文件。如果您只是想检查flowFile的内容,然后根据发生的错误将其路由到成功或失败,那么在成功路径中,您可以使用:

session.transfer(flowFile, REL_SUCCESS)
outputFlowFile = session.create(flowFile)
session.remove(flowFile)
在错误路径中,您可以执行以下操作:

session.transfer(flowFile, REL_FAILURE)
如果您想要新文件(可能在上面的循环中包含一个“msg”),您可以使用:

session.transfer(flowFile, REL_SUCCESS)
outputFlowFile = session.create(flowFile)
session.remove(flowFile)
使用输入流文件作为父级创建新流文件。如果要写入新的流文件,可以使用中描述的PyStreamCallback技术

如果创建新的流文件,请确保使用上述session.transfer()调用(但使用outputFlowFile而不是flowFile)将其最新版本传输到REL_SUCCESS或REL_FAILURE。此外,您还需要删除传入的流文件(因为您已经从中创建了子流文件并将其传输)。为此,您可以使用:

session.transfer(flowFile, REL_SUCCESS)
outputFlowFile = session.create(flowFile)
session.remove(flowFile)