如何捆绑使用多个捆绑软件的自定义NiFi处理器?

问题描述 投票:0回答:1

我编写了一个Custom NiFi处理器,该处理器使用一些Hadoop类,处理流文件并序列化与Avro之间的流文件。

据我所知

  • 要使用Hadoop类而不将其打包为NAR的一部分,我将需要[[nifi-hadoop-nar包AND

  • 要向/从Avro串行化流文件的内容,我需要RecordSetWriter和reader,它们是

    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抱怨找不到下一个类的错误。

我想知道:

  • 在NiFi项目的代码中,我发现了多个嵌套的包,它们之间的关系类似于nifi-nar-bundles-> nifi--bundle->。如何在处理器中引用两个捆绑软件?据我所知,自定义处理器只能有一个父NAR,而NAR = bundle?
  • 在pom.xml中指定多个NiFi捆绑包的首选方式是什么] >>

  • 理想情况下,我不想在我的NAR文件中捆绑Hadoop相关的依赖项或NiFi依赖项。还是捆绑这些依赖项在NiFi中是强制性的?
  • 我已经编写了一个Custom NiFi处理器,该处理器使用一些Hadoop类,处理流文件并序列化与Avro之间的流文件。据我所知,无需打包即可使用Hadoop类...

maven hadoop pom.xml apache-nifi
1个回答
0
投票
<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
© www.soinside.com 2019 - 2024. All rights reserved.