Apache nifi ExecutionScript输出两个不同的流文件NIFI
我将executionScript与python一起使用,我有一个数据集,它可能有一些损坏的数据,我的想法是处理好的数据,并将其放在我的flowfile内容中到我的成功关系中,损坏的将它们重定向到失败关系中,我做了如下操作: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
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)