我试图在我的python脚本中获取流文件的属性,我已经完成了以下操作:
class TransformCallback(StreamCallback):
def __init__(self):
pass
def process(self, inputStream, outputStream):
try:
# Read input FlowFile content
input_text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
input_obj = json.loads(input_text)
但是如何在流程方法中访问我的流文件属性?
答案 0 :(得分:2)
除非您将FlowFile的引用传递给TransformCallback构造函数,否则它们不会立即在process方法中可用。另一个选择是将读取和写入(因为您使用IOUtils.toString()一次读取整个事物)分成两个单独的调用,然后您可以在process()方法之外执行属性操作。
顺便说一下,如果你只需要将整个内容作为字符串读入,则不需要StreamCallback或InputStreamCallback,可以使用session.read(flowFile)返回一个InputStream(而不是执行提供的)打回来)。您可以在其上调用IOUtils.toString()(并且不要忘记之后关闭它),从而避免回调并允许使用当前的FlowFile引用(以及getAttribute()或getAttributes()更轻松地访问流文件属性方法)。