我能够通过CSVReader获得Apache NiFi来生成模式,然后我可以使用ConvertRecord将模式写入属性 . 但是,我需要使用UpdateRecord添加字段,但这些字段不会添加到流文件或schema属性中 . 我相信这是因为这些字段不是最初推断的模式的一部分 . 我无法在注册表中创建架构,因为它是从文件中推断出来的 . 那么当架构不包含字段时,如何向记录添加字段?
您是否使用InferAvroSchema不必担心生成架构,或者您真的不知道CSV文件的架构?如果是前者,则发送一个CSV,然后将推断的模式复制到CSVReader,并将UpdateRecord中的字段添加到写模式中 .
我已经编写了NIFI-5524来涵盖基于UpdateRecord属性在传出模式中添加/更新字段的自动化 .
是的,那是因为你在其中定义了 writer controller service doesn't have the new fields .
如果您是 adding new fields then we need to define new avro schema ,其中包含架构编写器控制器服务中包含的其他字段 .
将 Schema Access Strategy 更改为
使用'架构名称'属性(或)使用'架构文本'属性
然后定义新的模式,包括其中的新字段,以便Update Record处理器将新字段添加到输出流文件中 .
请查看this文章,因为我在其中添加了输入数据中不存在的 ts_tz,current_ts..etc 个字段,并使用包含 all the new/old fields 的 new avro schema 定义了 writer controller service .
2 回答
您是否使用InferAvroSchema不必担心生成架构,或者您真的不知道CSV文件的架构?如果是前者,则发送一个CSV,然后将推断的模式复制到CSVReader,并将UpdateRecord中的字段添加到写模式中 .
我已经编写了NIFI-5524来涵盖基于UpdateRecord属性在传出模式中添加/更新字段的自动化 .
是的,那是因为你在其中定义了 writer controller service doesn't have the new fields .
如果您是 adding new fields then we need to define new avro schema ,其中包含架构编写器控制器服务中包含的其他字段 .
将 Schema Access Strategy 更改为
然后定义新的模式,包括其中的新字段,以便Update Record处理器将新字段添加到输出流文件中 .
请查看this文章,因为我在其中添加了输入数据中不存在的 ts_tz,current_ts..etc 个字段,并使用包含 all the new/old fields 的 new avro schema 定义了 writer controller service .