Nifi:如何编写自定义处理器

时间:2017-09-30 18:00:36

标签: apache-nifi

我想编写 nifi处理器,它可以从hdfs目录读取xml文件,然后将其数据提取到流文件属性,如果有两个nifi处理器可以获取此文件并读取数据或写一些东西我怎么办文件锁,这样一次只有一个处理器可以使用它?你能告诉我任何文章,代码示例或一些可以帮助我的相关材料。我还没有写任何自定义处理器。

2 个答案:

答案 0 :(得分:2)

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

将flowfile内容提取到属性时要小心,因为flowfile内容存储在内容存储库中,并且当流文件在流中移动时,只传递引用指针。但是,属性内联存储在flowfile存储库中,并占用堆空间以便快速检索。如果你不小心的话,很容易摄取大量的源数据并意外地将整个数据块放入堆中。有关详细信息,请参阅Apache NiFi In Depth

如果您仍然对执行自定义处理器开发感兴趣,this article by Bryan Bende是一个很好的起点。引用的版本是陈旧的,但描述的过程应该很好。 Apache NiFi Developer Guide是另一个。最后,Apache NiFi Contributor Guide包含checkstyle说明,配置开发环境的提示等。

答案 1 :(得分:1)

这里有两个问题:

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

选项:

def count_nucleotides(dna, nucleotide):
    count = 0
    num = nucleotide

    for char in dna:
        if char == num:
            count = count + 1
   return count

2 - 如何确保文件只处理一次? getfile / gethdfs proc有选项" Keep Source File" ,是处理时移动/删除/保留选项。 您可以将它移动到临时区域并在处理后移回