如何捆绑使用多个捆绑包的定制nifi处理器?

u7up0aaq  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(708)

我已经编写了一个定制的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中,捆绑这些依赖项是强制性的吗?

bvpmtnay

bvpmtnay1#

<packaging>nar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-hadoop-nar</artifactId>
            <version>1.5.0</version>
            <type>nar</type>
        </dependency>

应该足够进去了 META-INF\MANIFEST.MF 属性 Nar-Dependency-* ```
Nar-Dependency-Id: nifi-hadoop-nar
Nar-Dependency-Group: org.apache.nifi
Nar-Dependency-Version: 1.5.0

相关问题