简体   繁体   English

将GCP控制器服务与自定义NiFi处理器配合使用

[英]Use GCP controller service with custom NiFi processor

I've written a custom NiFi processor for doing some tasks on BigQuery. 我已经编写了一个自定义NiFi处理器,用于在BigQuery上执行某些任务。 I would like to be able to re-use the GCP credentials provider controller service that comes bundled with NiFi to use for authentication. 我希望能够重复使用与NiFi捆绑在一起的GCP凭据提供程序控制器服务,以用于身份验证。 Is this possible? 这可能吗? I tried adding the nifi-gcp-processors maven dependency to my project, it builds successfully but when I try to start NiFi with my nar it fails with this error message. 我尝试将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).

It is possible to reuse the GCPCredentialsControllerService in your custom processor. 可以在自定义处理器中重用GCPCredentialsControllerService。 You may be missing the "NAR dependency" on the nifi-gcp-nar, which will allow NiFi to properly match your processor with the GCP credential service. 您可能在nifi-gcp-nar上缺少“ NAR依赖项”,这将使NiFi可以将您的处理器与GCP凭据服务正确匹配。 This is set in the pom.xml file of your custom process bundle's NAR output project, like "my-processors-nar". 这是在自定义流程包的NAR输出项目的pom.xml文件中设置的,例如“ my-processors-nar”。 It might look like: 它可能看起来像:

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

See NiFi Archives (NARs) in the NiFi Developers Guide for more details. 有关更多详细信息,请参见《 NiFi开发人员指南》中的NiFi存档(NAR)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM