【问题标题】:Nifi: how to write Custom processorNifi:如何编写自定义处理器
【发布时间】:2017-09-30 18:00:35
【问题描述】:

我想编写 nifi 处理器,它可以从 hdfs 目录读取 xml 文件,然后将其数据提取到流文件属性中,如果有两个 nifi 处理器可以获取此文件并读取数据的情况,或者向其中写入一些内容我怎样才能进行文件锁定,以便一次只有一个处理器可以使用它?您能否向我推荐任何可以帮助我的文章、代码示例或一些相关材料。我还没有编写任何自定义处理器。

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

    我不确定为什么在这种情况下需要编写自定义处理器,因为GetHDFSEvaluateXPath 处理器都存在并且应该能够在这里执行必要的任务。

    在将流文件内容提取到属性中时要小心,因为流文件内容存储在内容存储库中,并且当流文件在流中移动时,只会传递一个引用指针。然而,属性存储在流文件存储库中,并占用堆空间以便快速检索。很容易摄取一大块源数据,一不小心就会不小心把整块数据放入堆中。有关详细信息,请参阅Apache NiFi In Depth

    如果您仍然对执行定制处理器开发感兴趣,this article by Bryan Bende 是一个很好的起点。引用的版本已经过时,但所描述的过程应该可以很好地支持。 Apache NiFi Developer Guide 是另一个。最后,Apache NiFi Contributor Guide 有 checkstyle 说明,配置开发环境的技巧等。

    【讨论】:

      【解决方案2】:

      这里有两个问题:

      1 - 如何将 XML 提取到 Flowfile 属性中?

      选项:

      SplitXML -> EvaluateXPath (destination flowfile attribute) ->ReplaceText (to use the attributes)
      
      TransformXML -> SplitJSON-> evaluateJsonPath (destination flowfile attribute) ->ReplaceText (to use the attributes)
      

      2 - 如何确保文件只被处理一次? getfile/gethdfs 过程具有“保留源文件”选项,是处理时的移动/删除/保留选项。 您可以将其移至暂存区域并在处理后移回

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多