NiFi 1.5版
我有一个csv文件第一次到达:
datetime,a.DLG,b.DLG,c.DLG
2019/02/04 00:00,86667,98.5,0
2019/02/04 01:00,86567,96.5,0
使用列表文件-> fetchfile来获取csv文件。
接下来的10分钟,我将附加csv文件:
datetime,a.DLG,b.DLG,c.DLG
2019/02/04 00:00,86667,98.5,0
2019/02/04 01:00,86567,96.5,0
2019/02/04 02:00,86787,99.5,0
2019/02/04 03:00,86117,91.5,0
在这里,我们如何只需要单独获取新记录(最后两个记录)。我不想处理已经处理过的前两个记录。
我的想法是,我们需要获取最大的日期时间来存储在属性中并使用QueryRecord。但是我不知道如何使用哪个处理器来获得最大的日期时间。
有没有更好的解决方案。
答案 0 :(得分:1)
这是目前尚待解决的问题(NIFI-6047),但是社区对此做出了贡献,因此您可能会在即将发布的NiFi版本中看到DetectDuplicateRecord处理器。
可能存在一种解决方法,将CSV行拆分并使用ExtractText,然后使用DetectDuplicate创建复合键。
答案 1 :(得分:0)
在Nifi上似乎并不是最好的解决方案,因为您需要保持已处理状态的状态。另一种选择是让您删除已处理的内容。然后,您可以假定文件中的内容始终不会被处理。
答案 2 :(得分:0)
在这里,我们如何只需要单独获取新记录(最后两个记录)。 我不想处理已经存在的前两个记录 已处理。
据我了解,实际的问题是“如何在写入文件时处理/记录csv行?”。
NiFi documentation中对“ TailFile”处理器的描述:
“尾部”文件或文件列表,从文件中提取数据 被写入文件。该文件应该是文本文件。数据是 仅在遇到新行时才提取(回车或 换行符或组合)
当您不想移动/删除实际文件时,此解决方案是合适的。