#apache-nifi
#apache-nifi
Вопрос:
У меня есть файл внешних свойств, настроенный в nifi.properties в nifi.variable.registry.properties . Я хочу прочитать это свойство в процессоре executeScript на python. Я использовал str(context.getProperty('URL'))
, но он не работает
Ответ №1:
- объявите динамическое свойство для процессора 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 /…