我正在创建position: fixed; top: 0;
以将NiFi WorkFlow
转换为CSV
,我需要帮助配置JSON
' s ConvertRecords
。
正在发生的事情是JsonRecordSetWriter Controller Service
被抛出
无法找到名称为' ccr' (我为架构选择的名称)。
使用SchemaNotFoundException
从CSV
文档中的标头推断出架构,"InferAvroSchema"
配置为添加设置为{{1的"UpdateAttribute"
的属性(根据其他方法和指导的指导)。
"schema.name"
配置为使用Controller Service 'ccr'
,并在其中添加一个名为JsonRecordSetWriter
的属性,并将此属性的值设置为"AvroSchemaRegistry"
。
我希望使用属性"ccr"
中包含的派生架构,而不是必须提供avro架构的实际文本作为此添加属性的值。 "${inferred.avro.schema}"
的{{1}}属性设置为值"inferred.avro.schema"
,这意味着推断的avro架构将被放入名为InferAvroSchema
的属性中。
我真的需要帮助,因为我不能根据项目的要求将模式指定为文本。相反,我想使用推断的模式,以便我可以拥有由同一工作流处理的不同标头和数据内容的SchemaOutputDestination
个文件。
您可以与我分享任何帮助和指导,我将不胜感激。
答案 0 :(得分:1)
如果您的架构访问策略的读者或编写器设置为“架构名称”,那么它必须从架构注册表中按名称检索架构,并且架构注册表将不知道有关$ {inferred.avro的任何内容。架构}在流文件上。
您可以将编写器设置为使用“架构文本”的架构访问策略,并在架构文本字段中放置$ {inferred.avro.schema},以便它可以从传入的流文件中动态获取架构文本。此时您没有根据自己的要求使用架构注册表。
一个不同的选项,可能适合您...如果您使用的是1.4.0版本,则可以取消InferAvroSchema。您可以将ConvertRecord与CsvReader一起使用,并将模式访问策略设置为“使用来自标头的字符串字段”,以便读者推断出架构,然后在JsonRecordSetWriter中将Schema Access Startegy设置为“从Reader继承”,以便它使用相同的架构由读者决定。早期版本中不存在继承功能,这就是为什么它依赖于1.4.0。