Работа с атрибутами

Атрибуты FlowFile

Все данные в Apache NiFi представлены абстракцией, называемой FlowFile. FlowFile состоит из двух основных частей: содержимого и атрибутов. Информация о FlowFile доступна при нажатии на иконку info на странице List queue контекстного меню очереди потока.

Данные о FlowFile
Данные о FlowFile
Данные о FlowFile
Данные о FlowFile
Атрибуты FlowFile
Атрибуты FlowFile
Атрибуты FlowFile
Атрибуты FlowFile

Полный список основных атрибутов приведен в разделе FlowFile руководства разработчика NiFi.

Атрибуты FlowFile могут быть извлечены и использованы в качестве свойств процессоров при настройке потоков в интерфейсе NiFi.

Свойства процессора

Во время настройки процессоров на вкладке PROPERTIES отображаются свойства процессора. В столбце Property указано наименование параметра. В столбце Value указывается значение параметра. В зависимости от значений, разрешенных для свойства, в столбце Value пользователю предоставляется либо раскрывающийся список, из которого можно выбрать значение, либо текстовая область для ввода значения.

Свойства процессора
Свойства процессора
Свойства процессора
Свойства процессора

Для параметров с текстовой областью для ввода значений существуют следующие формы ввода значения:

  • напрямую;

  • с использованием параметров, определяемых при помощи контекста параметров;

  • с использованием переменных, задаваемых при помощи языка выражений Expression Language;

  • с использованием параметров вместе с языком выражений (подробно описано в Parameters and Expression Language).

В верхней части окна для ввода значения указано, поддерживаются ли Expression Language (EL) и Parameters (PARAM) для ввода значения конкретного свойства данного процессора.

Ввод значения параметра
Ввод значения параметра
Ввод значения параметра
Ввод значения параметра

Параметры имеют следующие преимущества перед переменными:

  • поддержка конфиденциальных значений;

  • более детальный контроль над политиками доступа;

  • свойства, ссылающиеся на параметры, проверяются на соответствие замененному значению, в отличие от большинства свойств, ссылающихся на переменные с помощью языка выражений.

Параметры

Значения свойств в потоке, включая конфиденциальные свойства, можно параметризовать с помощью параметров. Параметры создаются в окне Parameter Contexts глобального меню интерфейса NiFi Server. Контексты параметров глобально определяются для каждого экземпляра NiFi. К контекстам параметров можно применять политики доступа, чтобы определить какие пользователи могут их создавать.

Любое свойство можно настроить для ссылки на параметр со следующими условиями:

  • Конфиденциальное свойство может ссылаться только на конфиденциальный параметр.

  • Неконфиденциальное свойство может ссылаться только на неконфиденциальный параметр.

  • Свойства, которые ссылаются на службы контроллера, не могут использовать параметры.

  • На параметры нельзя ссылаться в задачах создания отчетов или в службах контроллера управления.

Создание контекста параметров

Чтобы создать контекст параметров, необходимо:

  1. Через глобальное меню интерфейса NiFi Server открыть окно Parameter Contexts.

  2. Нажать + для создания контекста параметров.

  3. На вкладке SETTINGS открывшегося окна Add Parameter Context ввести название и описание контекста параметров.

    Создание контекста параметров
    Создание контекста параметров
    Создание контекста параметров
    Создание контекста параметров
  4. Нажать APPLY.

    В результате в окне Parameter Contexts отображается созданный контекст параметров.

    Созданный контекст параметров
    Созданный контекст параметров
    Созданный контекст параметров
    Созданный контекст параметров

Создание параметров в контексте параметров

ПРИМЕЧАНИЕ

Допускается как создавать параметры при создании контекста параметров, так и добавлять параметры уже в созданный контекст параметров.

Чтобы создать новый параметр в контесте параметров, необходимо:

  1. Открыть для редактирования созданный контекст параметров, кликнув в строке контекста параметров на иконку редактирования manage.

  2. На вкладке PARAMETERS нажать + для создания параметра.

  3. В открывшемся окне Add Parameter заполнить поля для параметра:

    • Name — имя, которое используется для обозначения параметра. Допускаются только буквенно-цифровые символы, дефисы, символы подчеркивания, точки и пробелы.

    • Value — значение, которое будет использоваться при ссылке на параметр. Если параметр использует язык выражений, важно отметить, что язык выражений будет оцениваться в контексте компонента, который ссылается на параметр. Дополнительные сведения об использовании языка выражений в параметрах приведены ниже.

    • Set empty string — отметьте этот флажок для установки значения параметра в пустую строку. Не отмечен по умолчанию. Если флажок установлен, но значение указано, флажок игнорируется.

    • Sensitive Value — установите значение Yes, если значение параметра следует считать конфиденциальным. Если параметр конфиденциален, значение параметра не будет отображаться в пользовательском интерфейсе после применения. Значение по умолчанию — No. На конфиденциальные параметры могут ссылаться только конфиденциальные свойства, а на неконфиденциальные параметры — неконфиденциальные свойства. После создания параметра значение его конфиденциальности нельзя изменить.

    • Description — описание параметра. Это поле является необязательным.

      Создание параметра
      Создание параметра
      Создание параметра
      Создание параметра
  4. Нажать APPLY.

    В результате открывается иформационное окно по обновлению или созданию параметра. Для проверки всех компонентов, которые ссылаются на добавленные или измененные параметры, выполняются следующие операции: остановка или перезапуск зависимых процессоров, отключение или повторное включение зависимых служб контроллера, обновление контекста параметров.

    Информационное окно
    Информационное окно
    Информационное окно
    Информационное окно
  5. Нажать CLOSE. В результате в окне Update Parameter Context отображается созданный параметр.

    Созданный параметр
    Созданный параметр
    Созданный параметр
    Созданный параметр

Работа с контекстом параметров в интерфейсе NiFi server

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

  1. На свободном поле правой кнопкой мыши вызвать контекстное меню и выбрать команду Configure.

  2. В открывшемся окне NiFi Flow Configuration на вкладке GENERAL для параметра Process Group Parameter Context во всплывающем списке выбрать необходимый контекст параметров.

  3. Нажать APPLY.

    Включение контекста параметров для группы процессов
    Включение контекста параметров для группы процессов
    Включение контекста параметров для группы процессов
    Включение контекста параметров для группы процессов

Для того, чтобы применить созданный параметр из выбранного контекста параметров для конкретного процессора, необходимо выполнить:

  1. Для выделенного процессора правой кнопкой мыши вызвать контекстное меню и выбрать команду Configure.

  2. На вкладке PROPERTIES выбрать нужный параметр и в открывшемся окне ввести значение параметра в виде #{name}, где name — имя, введенное при создании параметра в контексте параметров.

    Применение созданного параметра
    Применение созданного параметра
    Применение созданного параметра
    Применение созданного параметра
  3. Нажать OK.

В случае успешного применения параметра в последнем столбце назначенного свойства появляется иконка arrow2 light, при клике на которую происходит переход на страницу Update Parameter Context, где данный параметр доступен к изменению.

Созданный параметр на вкладке PROPERTIES
Созданный параметр на вкладке PROPERTIES
Список FlowFiles
Созданный параметр на вкладке PROPERTIES
Update Parameter Context
Update Parameter Context
Update Parameter Context
Update Parameter Context

При клике на иконку arrow1 light каждый параметр также может быть записан в данный контекст параметров.

Запись параметра из имеющихся свойств процессора
Запись параметра из имеющихся свойств процессора
Запись параметра из имеющихся свойств процессора
Запись параметра из имеющихся свойств процессора

Проверка зависимых компонентов

На вкладке PARAMETERS окна Parameter Contexts для выбранного параметра в строке Referencing Components отображаются наименования всех процессоров, в которых применяется данный параметр.

Зависимые компоненты
Зависимые компоненты
Зависимые компоненты
Зависимые компоненты

Переменные

Переменные создаются и настраиваются в пользовательском интерфейсе NiFi. Их можно использовать в любой области, поддерживающей Expression Language. Переменные нельзя использовать для конфиденциальных свойств. NiFi автоматически подбирает новые или измененные переменные. Переменные определяются на уровне группы процессов, поэтому политики доступа для просмотра и изменения переменных являются производными от политик доступа группы процессов.

Создание переменной

Чтобы создать переменную, необходимо:

  1. На свободном поле правой кнопкой мыши вызвать контекстное меню и выбрать команду Variables.

  2. В открывшемся окне нажать + для создания переменной.

  3. Ввести наименование переменной

  4. Кликнуть OK.

    Создание переменной
    Создание переменной
    Создание переменной
    Создание переменной
  5. Ввести значение переменной.

    Ввод значения переменной
    Ввод значения переменной
    Ввод значения переменной
    Ввод значения переменной
  6. Кликнуть OK.

  7. В окне Variables нажать APPLY, в результате открывается иформационное окно по обновлению или созданию переменной.

    Информационное окно
    Информационное окно
    Информационное окно
    Информационное окно

Использование переменных в свойствах процессора с применением языка выражений

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

  1. Для выделенного процессора правой кнопкой мыши вызвать контекстное меню и выбрать команду Configure.

  2. На вкладке PROPERTIES выбрать нужный параметр и в открывшемся окне ввести значение параметра в виде ${name}, где name — имя, введенное при создании переменной.

    Применение созданного параметра
    Применение созданного параметра
    Применение созданного параметра
    Применение созданного параметра
    Функции Expression Language

     

    При помощи различных функций Expression Language существует возможность манипулировать значением переменных. Некоторые функции обеспечивают манипуляции со строками (текстом), например, функция toUpper. Другие, такие как функции equals и match, обеспечивают функциональность сравнения. Также существуют функции для управления датами и временем и для выполнения математических операций.

    Пользуясь необходимой структурой выражения, возможно, например, вернуть версию имени файла в верхнем регистре, вызвав функцию toUpper: ${filename:toUpper()}. В этом случае ссылаются на атрибут имени файла, а затем манипулируют этим значением с помощью функции toUpper.

    Вызов функции состоит из 5 элементов:

    • Разделитель вызова функции :.

    • Имя функции, в данном случае toUpper.

    • Открывающая скобка (.

    • Аргументы функции. Необходимые аргументы зависят от того, какая функция вызывается. В этом примере используется функция toUpper, у которой нет аргументов, поэтому этот элемент опущен.

    • Закрывающая скобка ) указывает на конец вызова функции.

  3. После ввода функции для переменной нажать OK в окне ввода значения свойства и APPLY на вкладке PROPERTIES в окне Configure процессора.

ПРИМЕЧАНИЕ

Переменные в дочерней группе процессов переопределяют значения в родительской группе. В частности, если переменная задана в группе root, а также получает иное значение внутри группы процессов, то в таком случае компоненты внутри группы процессов используют значение, определенное непосредственно в самой группе процессов.

Проверка зависимых компонентов

В окне Variables для выбранной переменной в строке Referencing Components отображаются наименования всех процессоров, в которых применяется данный параметр.

Зависимые компоненты
Зависимые компоненты
Зависимые компоненты
Зависимые компоненты
ВНИМАНИЕ

При создании настраиваемых свойств убедитесь, что каждое настраиваемое свойство содержит отдельное значение свойства, чтобы оно не перекрывалось существующими свойствами среды, системными свойствами или атрибутами FlowFile.

Параметры с использованием языка выражений

При добавлении параметра, использующего язык выражений, важно понимать контекст, в котором будет оцениваться язык выражений. Выражение всегда оценивается в контексте службы процессора или контроллера, которая ссылается на параметр. Возьмем, к примеру, сценарий, в котором у параметра с именем Time значением является ${now()}. Результатом выражения является вызов для определения системного времени при его оценке. При добавлении параметра Time в качестве свойства системное время оценивается не при добавлении параметра, а при оценке выражения службой процессора или контроллера. То есть, если процессор имеет свойство, значение которого установлено на #{Time}, он будет работать точно так же, как если бы значение свойства было установлено на ${now()}. Каждый раз, когда на свойство ссылаются, оно создает другую отметку времени.

Кроме того, некоторые свойства не позволяют использовать язык выражений, в то время как другие разрешают использовать язык выражений, но не оценивают выражения по атрибутам FlowFile. Чтобы понять, как это работает, рассмотрим параметр с именем File, значение которого равно ${filename}. Затем рассмотрим три разных свойства, каждое из которых имеет свою область языка выражений и FlowFile с именем файла test.txt. Если для каждого из этих свойств задано значение #{File}, результирующее значение показано в следующей таблице.

Настроенное значение свойства Область действия Expression Language Эффективное значение свойства Примечания

#{File}

Атрибуты FlowFile

test.txt

Имя файла разрешается просмотром атрибута имени файла

Только реестр переменных

Пустая строка

Атрибуты FlowFile не входят в область действия, и предполагается, что в реестре переменных нет переменной с именем filename

Нет

${filename}

Буквальный текст ${filename} не будет оцениваться

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней