假设我们有一个Csv文件,其中有5个字段,分别是ID,Age,FirstName,LastName,Address。
我想在一个流中路由所有数字字段(Id,Age),而在另一流中路由字符串字段(FirstName,LastName,Address)。我正在使用GetFile处理器来获取所有CSV。
要使用哪个处理器以及要设置什么配置?
谢谢!
答案 0 :(得分:3)
是的。如果您很清楚前面的所有字段,那么可以轻松完成。在这种情况下,您可以使用QueryRecord
处理器根据字段将FlowFiles的内容分离到不同的FlowFiles中。
QueryRecord
采用动态关系,该关系以SQL语句为值。例如,假设您的CSV中包含以下内容。
id,name,age,gender
1,John,29,M
5,Janine,31,F
并且您想要在FlowFile中拥有id
和age
,在另一个FlowFile中拥有name
和gender
,则需要按以下方式配置QueryRecord
:
由于QueryRecord
是基于记录的处理器,因此您想配置RecordReader和RecordWriter(我使用CSVReader
/ CSVRecordSetWriter
,因为我们的输入和输出将是CSV),并且可能需要使用SchemaRegistry
输出-数字字段
输出-非数字字段
提示:如果您要使用AvroSchemaRegistry
,则可以使用InferAvroSchema
处理器来为您的CSV输入推断Avro模式。