NiFi-控制顺序与EnforceOrder和MergeContent处理器合并两个数据流

时间:2018-12-12 15:22:48

标签: apache-nifi merge-file

我正在尝试使用EnforceOrder处理器以确定的顺序进行合并。为此,这是我的流程: enter image description here

在updateAttribute中,我正在生成一个属性以设置合并中所需的顺序。 在左边的一个中,我将值设置为“ 1”,在另一个中,我将其值设置为“ 2”。

enter image description here

然后是EnforceOrder的配置:

enter image description here

问题在于,仅到达 process.order = 1 的流而没有取出数字2。我在做什么错了?

欢呼

1 个答案:

答案 0 :(得分:2)

使用 EnforceOrder 处理器来控制流文件到达 MergeContent 处理器的顺序。

  • 使用UpdateAttribute处理器将序列号添加到流文件中。

示例:

  • 考虑2个流文件, Flowfile-2 (此内容需要首先显示),其sequence number flowfile1 低,然后提供{{1 }}与 success 处理器的连接,通过使用forceforceorder处理器,我们确保flowfile2将在flowfile1之前进入 Mergecontent 处理器。

请参考this,并使用强制顺序模板来熟悉MergeContent处理程序。

更新:

我认为问题在于EnforceOrder配置,

  • 组标识符配置为 enforce order ,因此,如果您使用两个不同的文件名,则处理器将不会等待它们。

  • 要解决此问题,请在{strong> ${filename} 处理器(如UpdateAttribute)中将 common属性保留为gn,然后在中使用相同的属性名称组标识符的属性值为 group_name

  • ${group_name} 连接自身连接到EnforceOrder处理器。

UpdateAttributeConfigs:

enter image description here

EnforceOrderConfigs: enter image description here

请使用this模板作为参考,并将其上传到您的NiFi实例,以查看流的运行方式。