按指定顺序合并流文件

时间:2019-01-10 23:40:59

标签: apache-nifi

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

1 个答案:

答案 0 :(得分:3)

EnforceOrder 处理器documentation

1。组标识符

  • 此属性会根据您的案例使用 UpdateAttribute 处理程序评估每个流文件,添加 group_name 属性并使用相同的{{ 1}}组标识符属性值中的属性。

2。订单属性

  • 表达语言不受支持。

  • 您可以使用 ${group_name} (或在其中创建filename new attribute 处理器,并在您的处理器中使用相同的属性名称 UpdateAttribute 属性值。

要获取 强制执行订单 处理器的参考/使用,请使用this模板并上传到您的NiFi实例。