我能够使Apache NiFi通过CSVReader生成模式,然后可以使用ConvertRecord将模式写出到属性中。但是,然后我需要使用UpdateRecord添加字段,但是这些字段没有被添加到流文件或模式属性中。我认为这是因为字段不是最初推断的架构的一部分。我无法在注册表中创建架构,因为它是从文件中推断出来的。那么,当架构不包含字段时,如何将字段添加到记录中呢?
答案 0 :(得分:3)
您是否使用InferAvroSchema不必担心生成架构,还是因为您实际上不知道CSV文件的架构?如果是前者,则发送一个CSV,然后将推断的架构复制到CSVReader,然后将UpdateRecord中的字段添加到写入架构中。
我已经撰写了NIFI-5524,以介绍基于UpdateRecord属性在传出架构中添加/更新字段的自动化过程。
答案 1 :(得分:1)
是的,这是因为您的 writer控制器服务中没有定义新字段。
如果您要添加新字段,那么我们需要使用架构编写器控制器服务中包含的其他字段来定义新的Avro架构。
将架构访问策略更改为
使用“架构名称”属性(或)使用“架构文本”属性
然后定义包含新字段的新模式,以便Update Record处理器将新字段添加到输出流文件中。
请查看this文章,因为我在其中添加了输入数据中不存在的 ts_tz,current_ts..etc 字段,并定义了 writer控制器服务,其中包含所有新/旧字段的新avro模式。
答案 2 :(得分:0)