我已经编写了一个定制的nifi处理器,它使用一些hadoop类,处理流文件,并将流文件序列化到avro中。
据我所知
要使用hadoop类而不将它们打包为nar的一部分,我需要nifi hadoop nar bundle和
要将流文件内容序列化到avro或从avro序列化流文件内容,我需要recordsetwriter和reader,它们是recordserializationservicesapi的一部分。
如果我的假设是错误的,请纠正我。
我已经编写了代码,测试了它,一切都按预期工作,直到我尝试部署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,但然后nifi抱怨下一个类没有找到错误。
我想知道:
在nifi项目的代码中,我发现了多个嵌套的bundle,它们之间的关系类似于nifi nar bundles->nifi--bundle->。如何引用我的处理器中的两个包?据我所知,定制处理器只能有一个父nar和nar=bundle?
在pom.xml中指定多个nifi包的首选方法是什么
理想情况下,我不想在nar文件中捆绑hadoop相关的依赖项或nifi依赖项。或者在nifi中,捆绑这些依赖项是强制性的吗?
1条答案
按热度按时间bvpmtnay1#
应该足够进去了
META-INF\MANIFEST.MF
属性Nar-Dependency-*
```Nar-Dependency-Id: nifi-hadoop-nar
Nar-Dependency-Group: org.apache.nifi
Nar-Dependency-Version: 1.5.0