我编写了一个Custom NiFi处理器,该处理器使用一些Hadoop类,处理流文件并序列化与Avro之间的流文件。
据我所知
要使用Hadoop类而不将其打包为NAR的一部分,我将需要[[nifi-hadoop-nar包AND
record-serialization-services-api
我已经编写了代码,对其进行了测试,并且一切正常,直到尝试将NAR部署到NiFi为止。
当我部署NAR并重新启动NiFi时,它会抛出java.lang.ClassNotFoundException: org.apache.nifi.serialization.RecordSetWriterFactory
异常。
我的NAR的pom.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 BUT,然后NiFi抱怨找不到下一个类的错误。我想知道:
我已经编写了一个Custom NiFi处理器,该处理器使用一些Hadoop类,处理流文件并序列化与Avro之间的流文件。据我所知,无需打包即可使用Hadoop类...
<packaging>nar</packaging>
<dependencies>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-hadoop-nar</artifactId>
<version>1.5.0</version>
<type>nar</type>
</dependency>
应该足以产生结果nar META-INF\MANIFEST.MF