我使用Nifi从远程服务器获取文件:我的文件如下:
timestamp (ms), nodeID,value
12345,x,12.4
12346,x,12.7
12348,x,13.4
12356,x,13,6
12355,y,12.0
我现在只是获取并获取并拆分行并将它们发送给Kafka,但在此之前,我需要对记录应用校验和方法并根据时间戳聚合它们,我需要做些什么才能添加额外的列到我的内容并根据聚合时间戳计算记录,例如基于每10毫秒和nodeID的聚合..
timestamp (ms), nodeID,value, counts
12345,x,12.4,3
12346,x,12.7,3
12348,x,13.4,3
12356,x,13,6,1
12355,y,12.0,1
如何在NiFi中执行上述过程。我是Nifi的新手,但需要在我的Nifi过程中添加以上功能。我目前正在使用以下nifi进程
答案 0 :(得分:3)
这可能无法直接回答您的问题,但您应该考虑重构您的流程以使用“记录”处理器。它会大大简化事情,可能会让你更接近于能够进行聚合。
我们的想法是不拆分记录,而是将它们妥善处理。鉴于您当前的流量,FetchSFTP之后的4个处理器希望更改为将CSV转换为JSON的单个ConvertRecord处理器。您首先需要为数据定义一个简单的Avro架构。
完成记录处理设置后,您可以使用PartitionRecord按节点ID对记录进行分区,然后从那里删除缺少的部分将是如何按时间戳计数。
一些额外资源......
https://blogs.apache.org/nifi/entry/record-oriented-data-with-nifi
https://bryanbende.com/development/2017/06/20/apache-nifi-records-and-schema-registries
https://www.slideshare.net/BryanBende/apache-nifi-record-processing