NiFi中是否有一种方法可以根据文件名来路由数据?

时间:2018-10-11 23:41:23

标签: routing apache-nifi

假设我们有一个Csv文件,其中有5个字段,分别是ID,Age,FirstName,LastName,Address。

我想在一个流中路由所有数字字段(Id,Age),而在另一流中路由字符串字段(FirstName,LastName,Address)。我正在使用GetFile处理器来获取所有CSV。

要使用哪个处理器以及要设置什么配置?

谢谢!

1 个答案:

答案 0 :(得分:3)

是的。如果您很清楚前面的所有字段,那么可以轻松完成。在这种情况下,您可以使用QueryRecord处理器根据字段将FlowFiles的内容分离到不同的FlowFiles中。

enter image description here

QueryRecord采用动态关系,该关系以SQL语句为值。例如,假设您的CSV中包含以下内容。

id,name,age,gender
1,John,29,M
5,Janine,31,F

并且您想要在FlowFile中拥有idage,在另一个FlowFile中拥有namegender,则需要按以下方式配置QueryRecord

enter image description here

由于QueryRecord是基于记录的处理器,因此您想配置RecordReader和RecordWriter(我使用CSVReader / CSVRecordSetWriter,因为我们的输入和输出将是CSV),并且可能需要使用SchemaRegistry

对其进行配置

输出-数字字段

enter image description here

输出-非数字字段

enter image description here

提示:如果您要使用AvroSchemaRegistry,则可以使用InferAvroSchema处理器来为您的CSV输入推断Avro模式。