【发布时间】:2020-09-03 22:14:20
【问题描述】:
我有一些列名不同的输入文件。我可以创建一个通用的 Nifi 流程来处理所有类型的文件吗?每个文件将具有不同类型的列和要加载的不同类型的输出表。例如,文件 1 将有 A 列、B 列加载到表 AB,文件 2 将有 C 列、D 列、E 列加载到表 CDE。我可以在一个流程中实现这一点,还是应该为不同类型的文件创建不同的流程?我是Nifi的新手,请建议。
【问题讨论】:
标签: apache-nifi
我有一些列名不同的输入文件。我可以创建一个通用的 Nifi 流程来处理所有类型的文件吗?每个文件将具有不同类型的列和要加载的不同类型的输出表。例如,文件 1 将有 A 列、B 列加载到表 AB,文件 2 将有 C 列、D 列、E 列加载到表 CDE。我可以在一个流程中实现这一点,还是应该为不同类型的文件创建不同的流程?我是Nifi的新手,请建议。
【问题讨论】:
标签: apache-nifi
您应该能够使用单个流来执行此操作,也许使用 RouteOnContent 来查找标题,以便您知道它是哪种类型的文件。每个传出连接将对应于不同类型的文件/输出表,因此您可以在每个传出连接的另一端有一个 UpdateAttribute,以设置表名之类的属性,可能是记录模式(如果使用基于记录的我推荐的处理器)等。然后您可以使用漏斗合并子流,或者将所有传出连接连接到下一个下游处理器(例如 PutDatabaseTable)。
如果您根本不想拆分流程,您可能需要执行相同的工作来识别文件类型和设置属性,但要使用单个脚本(例如使用 ExecuteScript)。在任何情况下,下游处理器都应该能够使用 NiFi Expression Language 的属性,以便同一个处理器可以适当地处理不同的文件类型。
【讨论】: