在executeScript NIFI python

时间:2016-12-07 16:52:44

标签: python apache-nifi

我试图在我的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)

但是如何在流程方法中访问我的流文件属性?

1 个答案:

答案 0 :(得分:2)

除非您将FlowFile的引用传递给TransformCallback构造函数,否则它们不会立即在process方法中可用。另一个选择是将读取和写入(因为您使用IOUtils.toString()一次读取整个事物)分成两个单独的调用,然后您可以在process()方法之外执行属性操作。

顺便说一下,如果你只需要将整个内容作为字符串读入,则不需要StreamCallback或InputStreamCallback,可以使用session.read(flowFile)返回一个InputStream(而不是执行提供的)打回来)。您可以在其上调用IOUtils.toString()(并且不要忘记之后关闭它),从而避免回调并允许使用当前的FlowFile引用(以及getAttribute()或getAttributes()更轻松地访问流文件属性方法)。