Я написал один пользовательский процессор NiFi, который использует некоторые классы Hadoop, обрабатывает потоковые файлы и сериализует потоковые файлы в и из Avro.
Насколько мне известно
чтобы использовать классы Hadoop без упаковки их как части NAR, мне потребуется nifi-hadoop-nar bundle AND
для сериализации содержимого потокового файла в / из Avro, Iпотребуется RecordSetWriter и считыватель, которые являются частью record-serialization-services-api .
Пожалуйста, исправьте меня, если мои предположения неверны.
Я написал код, протестировал его, и все работает, как и ожидалось, пока я не попытаюсь развернуть NAR на NiFi.
Когда я развертываю NAR и перезагружаю NiFi, выдается java.lang.ClassNotFoundException: org.apache.nifi.serialization.RecordSetWriterFactory
исключение.
Мои NARpom.xml выглядит следующим образом:
<dependencies>
<dependency>
<groupId>com.my_company.is.data.tools</groupId>
<artifactId>custom-data-movement-processors</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-hadoop-nar</artifactId>
<version>1.5.0</version>
<type>nar</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-record-serialization-service-api</artifactId>
<version>1.5.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
, а файл pom.xml процессора выглядит следующим образом:
<dependencies>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-record-serialization-services</artifactId>
<version>1.5.0</version>
<scope>provided</scope>
<dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-record-serialization-services-api</artifactId>
<version>1.5.0</version>
<scope>provided</scope>
<dependency>
</dependencies>
Поскольку я пометил nifi-record-serialization-services-api
как provided
, это не так.не может быть получен в результате файл NAR.Теперь я могу быстро исправить и удалить прицел и создать NAR, НО тогда NiFi жалуется на ошибку следующего класса не найдена.
Я хотел бы знать:
ВКод проекта NiFi Я нашел несколько вложенных пакетов, которые имеют отношение примерно к этому nifi-nar-bundles -> nifi - bundle ->.Как ссылаться на два пакета в моем процессоре?Насколько мне известно, пользовательский процессор может иметь только один родительский NAR и NAR = пакет?
Какой предпочтительный способ указать несколько пакетов NiFi в pom.xml
В идеале я не хочу связывать связанные с Hadoop зависимости или зависимости NiFi в моем файле NAR.или это все в NiFi для объединения этих зависимостей?