Apache nifi NiFi:如何从第一列获取最大时间戳?

Apache nifi NiFi:如何从第一列获取最大时间戳?,apache-nifi,Apache Nifi,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 使用listfile->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.

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
使用listfile->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。但我不知道如何使用哪个处理器获得最大日期时间


有没有更好的解决方案。

这似乎不是一项在Nifi上解决得最好的工作,因为您需要保持已处理内容的状态。另一种选择是删除已经处理的内容。然后,您可以假设文件中的内容始终未被处理

在这里,我们需要如何仅获取新记录(仅最后两个记录)。 我不想处理前两条已经被删除的记录 已处理

据我所知,实际问题是“如何在csv行写入文件时处理/接收csv行?”

“TailFile”处理器的说明来自:

跟踪文件或文件列表,从文件中提取数据 已写入该文件。该文件应为文本文件。数据是 仅当遇到新行或回车时接收 新行字符或组合


当您不想移动/删除实际文件时,此解决方案是合适的。

这是一个目前尚未解决的问题,但有社区贡献来解决它,因此您可能会在即将发布的NiFi中看到DetectDuplicateRecord处理器


可能有一种解决方法,可以拆分CSV行并使用ExtractText创建复合键,然后使用DetectDuplicate

我们如何管理国家。你是说UpdateAttribute状态属性吗。如果是这样的话,你能说得更清楚一点吗?这就是问题所在,如果你必须保持状态Nifi不是你想要存储状态的地方,那么这样做将是一种黑客行为,Nifi应该在没有状态的情况下工作,如果你需要保持状态,你需要引入一个存储或一个需要存储的微服务。最简单的解决方法是我提到的,每当你阅读文件时,你都会清理它。因此,您不需要保持状态。这并不能解决问题,因为他需要知道要解析多少,有很多方法可以读取CSV、拆分文件等。问题似乎是,他需要跟踪位置,并从停止的位置继续文件更改。