【发布时间】:2019-03-21 16:21:34
【问题描述】:
我正在尝试使用 python 中的 ExecuteScript 处理器从一个流文件生成多个流文件。
输出流文件依赖于一个配置属性和输入流文件(xml 内容)。
我尝试了很多东西,但总是以如下错误结束:
- 此流文件已标记为传输
- 未指定转移关系
低于上一个版本:
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback
import java.io
from org.python.core.util import StringUtil
class PyStreamCallback(StreamCallback):
def __init__(self, flowFile):
global matched
self.parentFlowFile = flowFile
pass
def process(self, inputStream, outputStream):
try:
text_content = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
flowfiles_list = []
new_xml = "blabla"
outputStream.write(bytearray(new_xml.encode('utf-8')))
for n in range(0,5):
flowFile = session.create(self.parentFlowFile)
if (flowFile != None):
flowFile = session.write(flowFile, "Nothing")
flowfiles_list.append(flowFile)
for flow in flowfiles_list:
session.transfer(flow, REL_SUCCESS)
except:
print('Error inside process')
raise
originalFlowFile = session.get()
if(originalFlowFile != None):
try :
originalFlowFile = session.write(originalFlowFile, PyStreamCallback(originalFlowFile))
session.remove(originalFlowFile)
except Exception as e:
originalFlowFile = session.putAttribute(originalFlowFile,'python_error', str(e))
session.transfer(originalFlowFile, REL_FAILURE)
谁能告诉我我做错了什么以及如何实现我想做的事情?
【问题讨论】:
-
请编辑您的问题并提供当前代码的完整堆栈跟踪。
标签: python apache-nifi