我有一个公共进程组,它将根据我提供的文件推断出avro架构。但我想将Avro记录名称设置为与我提供的文件名对应的名称。所以我使用$ {filename}。但InferAvroSchema收到错误,说记录名称为空。请注意,在此之前,我已经设置了属性" filename"到flowfile属性,它有一个值,因为我使用ReplaceText测试它,看看$ {filename}的值是否为
答案 0 :(得分:2)
不幸的是,这看起来像是InferAvroSchema中的一个错误。许多属性支持表达式语言,但是处理器不会根据传入的流文件对它们进行评估。因此,它最终只能使用直接键入属性(非EL)的值,或者系统或环境属性中的值,这些值对于很多这些属性都没有意义。
我为此问题创建了此JIRA: https://issues.apache.org/jira/browse/NIFI-2465
修复是对evaluateAttributeExpressions()的所有调用应该传递一个流文件,如:
context.getProperty(CSV_HEADER_DEFINITION).evaluateAttributeExpressions(inputFlowFile).getValue()