我是nifi的新手(使用1.8.0版)。我需要使用包含每条经纬度形式的车辆位置的kafka消息。由于每个消息都将作为流文件到达,因此我需要合并所有这些流文件,并制作一个json文件,其中包含车辆所遵循的完整路径。我正在使用消耗卡夫卡处理器来订阅消息,更新属性处理器(添加的属性是文件名:$ {getStateValue(“ seq”)},seq:$ {getStateValue(“ seq”):plus(1)})以添加一个序列号作为文件名(例如,文件名是1,2、3等),并放置文件处理器以将这些文件写入指定的目录中。我已经在上述处理器之间的所有成功关系上配置了FIFO优先级队列。一次,我收到了所有要合并所有流文件的消息。为此,我知道我必须分别使用获取文件,强制执行命令,合并内容(合并策略:bin打包算法,合并格式:binary concatenation)和放置文件处理器。我的方法正确吗?我应该如何确定文件的合并按照文件名的顺序进行,因为filename是一个seq编号。我应该在强制命令处理程序中放入什么命令属性?应该在组标识符中放入什么?强制订单处理程序中还有更多自定义字段要添加吗?
答案 0 :(得分:3)
EnforceOrder
处理器documentation
1。组标识符
UpdateAttribute
处理程序评估每个流文件,添加 group_name 属性并使用相同的{{ 1}}组标识符属性值中的属性。2。订单属性
表达语言不受支持。
您可以使用 ${group_name}
(或在其中创建filename
new attribute
处理器,并在您的处理器中使用相同的属性名称
UpdateAttribute
属性值。
要获取 强制执行订单 处理器的参考/使用,请使用this模板并上传到您的NiFi实例。