代码之家  ›  专栏  ›  技术社区  ›  Adam

Apache NIFI中处理器属性和流文件属性的区别

  •  0
  • Adam  · 技术社区  · 5 年前

    我目前的理解是NIFI处理器属性特定于该处理器。因此,向处理器添加一个新属性将只在该处理器中可见,而不会传递给后面的处理器块?

    这就是为什么 UpdateAttribute 需要添加在流文件遍历数据流时保留在该流文件中的元数据:

    Update Attribute NiFi Processor Block

    那么,允许用户在处理器中添加自定义属性,而不是该处理器执行所定义和需要的属性,这有什么价值呢?它是否类似于创建可用于其他属性的变量?

    Processor Block Properties

    1 回复  |  直到 5 年前
        1
  •  4
  •   Sivaprasanna Sethuraman    5 年前

    这是一个非常好的问题,当每个人开始在NIFI中构建数据流时都会想到。

    首先:属性与流文件属性

    正如你自己在问题本身中提到的, Properties 是用来控制你的行为的东西 Processor 虽然 Attributes 是您的流程的元数据。

    举个简单的例子 GetFile 处理器。它所暴露的属性 Input Directory , File Filter 等等,告诉处理器在哪里以及如何查找源数据。当处理器成功地找到与您的配置匹配的源时,它启动流,这意味着 FlowFile 生成。这个流文件将包含源数据的内容以及源的一些元数据,例如文件名、文件大小、上次修改时间等,这些元数据实际上可以帮助您使用后续的处理器(如检查文件的类型并相应地路由流文件)沿着流走。请注意,元数据并不是固定的;它不同于不同的处理器。

    每个处理器需要添加的核心属性很少 application.type , filesize , uuid , path 等,

    允许用户在未添加到属性中时添加自定义属性的目的是什么?

    这是NIFI提供给处理器的一个功能,它们可以使用或忽略。并非所有处理器都允许添加自定义属性。只有选择性的处理器才能做到。

    让我们来 InvokeHttp 作为一个例子。此处理器允许开发人员创建自定义属性。当用户添加新的自定义属性时,该属性将作为头添加到HTTP调用中,因为处理器是以这种方式构建的,所以处理器将进行此调用。它查找任何动态(自定义)属性。如果它们存在,它将被视为用户想要发送的自定义头文件。

    至少,在这个处理器的上下文中,将这个头数据捕获为元数据是没有意义的,因为它可能对后续处理器不有用,但在提供自定义属性时,某些其他处理器的行为有所不同,例如 UpdateAttribute 其唯一目的是将任何自定义属性添加为传入流文件的属性。

    推荐文章
    El.Hum  ·  SSIS不识别索引?
    7 年前