我想编写 nifi处理器,它可以从hdfs目录读取xml文件,然后将其数据提取到流文件属性,如果有两个nifi处理器可以获取此文件并读取数据或写一些东西我怎么办文件锁,这样一次只有一个处理器可以使用它?你能告诉我任何文章,代码示例或一些可以帮助我的相关材料。我还没有写任何自定义处理器。
答案 0 :(得分:2)
我不确定为什么在这种情况下需要编写自定义处理器,因为GetHDFS
和EvaluateXPath
处理器都存在,并且应该能够在此处执行必要的任务。
将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" ,是处理时移动/删除/保留选项。 您可以将它移动到临时区域并在处理后移回