当前位置: 首页 > 知识库问答 >
问题:

使用自定义NiFi处理器的GCP控制器服务

孙言
2023-03-14

我编写了一个自定义的NiFi处理器,用于在BigQuery上执行一些任务。我希望能够重用与NiFi捆绑在一起的GCP凭据提供者控制器服务,以用于身份验证。这可能吗?我尝试将nifi-gcp-processors maven依赖项添加到我的项目中,它成功构建,但当我尝试用我的nar启动NiFi时,它失败了,出现了这个错误消息。

2017-12-14 05:09:27,406 ERROR [main] org.apache.nifi.NiFi Failure to launch NiFi due to java.util.ServiceConfigurationError: org.apache.nifi.processor.Processor: Provider org.apache.nifi.processors.gcp.storage.PutGCSObject could not be instantiated
java.util.ServiceConfigurationError: org.apache.nifi.processor.Processor: Provider org.apache.nifi.processors.gcp.storage.PutGCSObject could not be instantiated
    at java.util.ServiceLoader.fail(ServiceLoader.java:232)
    at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
    at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
    at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
    at org.apache.nifi.nar.ExtensionManager.loadExtensions(ExtensionManager.java:142)
    at org.apache.nifi.nar.ExtensionManager.discoverExtensions(ExtensionManager.java:117)
    at org.apache.nifi.web.server.JettyServer.start(JettyServer.java:702)
    at org.apache.nifi.NiFi.<init>(NiFi.java:160)
    at org.apache.nifi.NiFi.main(NiFi.java:268)
Caused by: java.lang.NoClassDefFoundError: com/google/cloud/HttpServiceOptions
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
    at java.lang.Class.getConstructor0(Class.java:3075)
    at java.lang.Class.newInstance(Class.java:412)
    at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
    ... 7 common frames omitted
Caused by: java.lang.ClassNotFoundException: com.google.cloud.HttpServiceOptions
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 12 common frames omitted
2017-12-14 05:09:27,408 INFO [Thread-1] org.apache.nifi.NiFi Initiating shutdown of Jetty web server...
2017-12-14 05:09:27,408 INFO [Thread-1] org.apache.nifi.NiFi Jetty web server shutdown completed (nicely or otherwise).

共有1个答案

郭元凯
2023-03-14

可以在自定义处理器中重用GCPCredentialsControllerService。您可能缺少nifi-gcp-nar上的“nar依赖项”,这将允许NiFi将您的处理器与GCP凭据服务正确匹配。这是在自定义进程包的NAR输出项目的pom.xml文件中设置的,比如“my-processors-nar”。它可能看起来像:

<dependency>
    <groupId>org.apache.nifi</groupId>
    <artifactId>nifi-gcp-nar</artifactId>
    <version>1.4.0</version>
    <type>nar</type>
</dependency>

有关更多详细信息,请参见《NiFi开发人员指南》中的NiFi归档。

 类似资料:
  • 我看到了Apache NiFi的这个示例(https://medium.com/hashmapinc/creating-custom-processors-and-controllers-in-apache-nifi-e14148740ea),但仍然无法理解如何为自定义处理器和控制器服务实现打包结构。 我的目标是创建一个自定义控制器服务来使用我的多个自定义处理器。我的maven结构应该是什么样子?

  • 我似乎无法创建一个自定义的DistributedMapCacheClientService(名为TestDistributedMapCacheClientService)供普通nifi处理器(如Wait和PutDistributedMapCache)使用。我可以让Wait和PutDistributedMapCache看到我的自定义服务,但处理器无法启动,因为nifi说我的nar“与AtomicDi

  • 我试图加载一个自定义的NiFi处理器,但无法让NiFi加载所有的.nar依赖项,尽管尝试了各种pom.xml配置。我在SO上遇到过一些类似的问题,但还没有找到这个问题的答案。

  • 我明白,对于处理器,我只需在文件夹下的中编写代码,然后从中创建一个nar文件。但是在控制器服务的情况下,我有4个文件夹生成。我可以看到两个java文件。 > 显示在文件夹下 显示在文件夹下 现在,为什么在自定义控制器服务的情况下生成两个java文件,而在自定义处理器的情况下只生成一个java文件。另外,由于我试图模仿服务,其中的java文件中有两个我应该复制服务的原始源代码。 请从头开始指导我创建

  • 我使用的是Nifi 0.4.1版本。我写自定义代码转换CSV到avro格式。我已经创建了类文件,并能够生成nar文件。将nar文件放置在lib目录中,并重新启动nifi服务器。 任何帮助都很感激.. 谢谢,