python - 在executeScript NIFI python中使用FlowFile属性

标签 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)

但是如何在 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/

相关文章:

groovy - 如何在 'DBCPConnectionPoolLookup'处理器中使用 'ExecuteGroovyScript'?

python - 如何使用 pyunpack 解压 .7z 文件?

python - 为什么 Python 的 .decode ('cp037' ) 不适用于特定的二进制数组?

python - Pandas :每行前 N 个非缺失值的总和

hadoop - 运行 NiFi 所需的 Hadoop 配置是什么?

在 Nifi 中使用 getHttp 处理器时出现 SSL 上下文无效错误

apache-nifi - 如何使用 InvokeHTTP 的 JSON 响应为另一个 InvokeHTTP 创建 header ?

python - 在 Python 上调用 C 函数只打印第一个字符

python - Django 出错时渲染管理表单

mysql - 对每一行的 JSON 数据执行正则表达式,并使用 NiFi 插入 MySQL 表