将 GCP 控制器服务与自定义 NiFi 处理器一起使用
Use GCP controller service with custom NiFi processor
我编写了一个自定义 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.access0(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.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).
可以在自定义处理器中重用 GCPCredentialsControllerService。您可能缺少 nifi-gcp-nar 上的 "NAR dependency",这将允许 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 Archives (NARs)。
我编写了一个自定义 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.access0(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.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).
可以在自定义处理器中重用 GCPCredentialsControllerService。您可能缺少 nifi-gcp-nar 上的 "NAR dependency",这将允许 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 Archives (NARs)。