我正在尝试在 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)
但是如何在 process 方法中访问我的流文件属性?
最佳答案
除非您执行诸如将对 FlowFile 的引用传递到 TransformCallback 构造函数之类的操作,否则它们不会立即在 process 方法中可用。另一种选择是将读取和写入(因为您使用 IOUtils.toString() 一次读取整个内容)分成两个单独的调用,然后您可以在 process() 方法之外进行属性操作。
顺便说一句,如果您只需要以字符串形式读取整个内容,则不需要 StreamCallback 或 InputStreamCallback,您可以使用 session.read(flowFile) 返回一个 InputStream (而不是执行提供的打回来)。您可以对其调用 IOUtils.toString() (并且不要忘记之后关闭它),从而避免回调并允许使用当前的 FlowFile 引用(以及 getAttribute() 或 getAttributes() 更轻松地访问流文件属性方法)。
关于python - 在executeScript NIFI python中使用FlowFile属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41023061/