Чтение внешних свойств в процессоре executeScript

#apache-nifi

#apache-nifi

Вопрос:

У меня есть файл внешних свойств, настроенный в nifi.properties в nifi.variable.registry.properties . Я хочу прочитать это свойство в процессоре executeScript на python. Я использовал str(context.getProperty('URL')) , но он не работает

Ответ №1:

https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-scripting-nar/1.9.1/org.apache.nifi.processors.script.ExecuteScript/index.html


  • объявите динамическое свойство для процессора executeScript. например VAR_URL = ${URL}
  • затем внутри скрипта вы можете получить доступ к этому свойству: VAR_URL.evaluateAttributeExpressions(flowFile).getValue()

или, если вы не хотите объявлять свойство для своего процессора и уверены, что свойство где-то объявлено, вы можете использовать следующий код:

 context.newPropertyValue( '${URL}' ).evaluateAttributeExpressions().getValue()
  

Примечание: не используйте двойные кавычки вокруг ${URL} , потому что это выражение будет обработано как groovy-string перед вычислением выражения nifi…

Комментарии:

1. В executescript я использовал для записи IP = context.newPropertyValue(«${IP}»).evaluateAttributeExpressions().GetValue() для скрипта Python, Но теперь я пытаюсь сделать то же самое в executegroovyscript, это не работает. Я видел примеры, которые совпадают с приведенным выше кодом для groovy, но это не работает

2. Он выдает исключение groovy.lang.MissingPropertyException: Нет такого свойства: IP .. Даже пробовал context.getProperty(«${IP}»).evaluateAttributeExpressions().GetValue(), выдает то же исключение

3. О, произошла ошибка: используйте одинарные кавычки для этой строки: context.getProperty('${IP}').... потому что с двойными кавычками ${} обрабатывается как groovy выражение. С двойными кавычками это не должно работать в обоих случаях… Собираюсь изменить ответ.

4. как я могу использовать это в классе статического блока Const{ статическая строка ip = context.getProperty(‘${IP}’).evaluateAttributeExpressions().GetValue();} }

5. в статическом блоке их нет context , если только это не static onStart(ProcessContext context){...} метод в ExecuteGroovyScript процессоре. Пример смотрите здесь: nifi.apache.org/docs/nifi-docs/components/org.apache.nifi /…