Apache nifi 基于流属性的InferAvroSchema Avro记录名称

Apache nifi 基于流属性的InferAvroSchema Avro记录名称,apache-nifi,Apache Nifi,我有一个公共进程组,它将根据我提供的文件推断avro模式。但是我想将Avro记录名设置为与我提供的文件名对应的名称。所以我使用了${filename}。但是地狱模式出错,说记录名是空的。请注意,在此之前,我已经将属性“filename”设置为flowfile属性,并且它有一个值,因为我使用ReplaceText测试它,以查看${filename}是否有值。不幸的是,这看起来像是InferAvroSchema中的一个bug。许多属性都支持表达式语言,但处理器不会根据传入的流文件对它们求值。因此,它

我有一个公共进程组,它将根据我提供的文件推断avro模式。但是我想将Avro记录名设置为与我提供的文件名对应的名称。所以我使用了${filename}。但是地狱模式出错,说记录名是空的。请注意,在此之前,我已经将属性“filename”设置为flowfile属性,并且它有一个值,因为我使用ReplaceText测试它,以查看${filename}

是否有值。不幸的是,这看起来像是InferAvroSchema中的一个bug。许多属性都支持表达式语言,但处理器不会根据传入的流文件对它们求值。因此,它最终只能使用直接键入到属性(非EL)中的值,或者使用来自系统或环境属性的值,而这些属性中的很多都没有意义

我为这个问题创建了这个JIRA:

修复方法是,对evaluateAttributeExpressions()的所有调用都应该传入一个流文件,如:

context.getProperty(CSV_HEADER_DEFINITION).evaluateAttributeExpressions(inputFlowFile).getValue()