我在不同的位置有 3 个文件,为此我使用了 3 个列表文件处理器,然后是获取文件处理器。现在我想将这些文件路由到它们各自的目的地,这对于所有 3 个文件都是不同的。需要一些关于如何做到这一点的帮助。
谢谢
最佳答案
根据您上面提到的路由逻辑,您可以将流程设置为:
ListFile(s) -> FetchFile(s) -> RouteOnAttribute -> PutFile(s)
在 RouteOnAttribute
中,您可以使用 NiFi 表达式语言支持。例如,您可以拥有三个属性:
destination.one : ${filename:startsWith('abc')}
destination.two : ${filename:startsWith('def')}
destination.three : ${filename:startsWith('xyz')}
解释
您将有三个 ListFile
处理器连接到三个 FetchFile
处理器。然后将三个处理器的Success
输出都连接到RouteOnAttribute
,定义好以上三个关系后,就可以将这三个关系连接到相关的PutFile
处理器。
在上面的示例中,RouteOnAttribute
将名称以 abc
开头的文件路由到关系 destination.one
,文件名以def
转到 destination.two
等等。
关于hdfs - Nifi List 来自多个路径的文件并将它们路由到各自的目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50276346/