java - nifi 1.0.0 - 扩展标准处理器的行为

标签 java apache-nifi

我有一个扩展 MergeContent 过程的自定义处理器,当 NiFi 启动时,我在日志中出现以下错误:

2016-09-09 18:17:00,607 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.standard.DetectDuplicate could not be instantiated
java.util.ServiceConfigurationError: org.apache.nifi.processor.Processor: Provider org.apache.nifi.processors.standard.DetectDuplicate could not be instantiated
        at java.util.ServiceLoader.fail(ServiceLoader.java:232) ~[na:1.8.0_101]
        at java.util.ServiceLoader.access$100(ServiceLoader.java:185) ~[na:1.8.0_101]
        at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384) ~[na:1.8.0_101]
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) ~[na:1.8.0_101]
        at java.util.ServiceLoader$1.next(ServiceLoader.java:480) ~[na:1.8.0_101]
        at org.apache.nifi.nar.ExtensionManager.loadExtensions(ExtensionManager.java:107) ~[nifi-nar-utils-1.0.0.jar:1.0.0]
        at org.apache.nifi.nar.ExtensionManager.discoverExtensions(ExtensionManager.java:88) ~[nifi-nar-utils-1.0.0.jar:1.0.0]
        at org.apache.nifi.NiFi.<init>(NiFi.java:135) ~[nifi-runtime-1.0.0.jar:1.0.0]
        at org.apache.nifi.NiFi.main(NiFi.java:243) ~[nifi-runtime-1.0.0.jar:1.0.0]
Caused by: java.lang.NoClassDefFoundError: org/apache/nifi/distributed/cache/client/Serializer
        at java.lang.Class.getDeclaredConstructors0(Native Method) ~[na:1.8.0_101]
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) ~[na:1.8.0_101]
        at java.lang.Class.getConstructor0(Class.java:3075) ~[na:1.8.0_101]
        at java.lang.Class.newInstance(Class.java:412) ~[na:1.8.0_101]
        at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380) ~[na:1.8.0_101]
        ... 6 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.apache.nifi.distributed.cache.client.Serializer
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_101]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_101]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_101]

在 Nifi 0.6.1/0.7.0 上它可以工作,但是当我尝试使用 PutSQL proc 时,我在属性列表中看不到填充的 DBCPConnectionPool 服务。

是否有适当的方法来扩展标准处理器的行为?

最佳答案

如果您在 NAR 中扩展或使用来自另一个 NAR 的组件,则它们之间需要存在 NAR 依赖关系。

本页演示如何在单独的 NAR 中设置处理器和 Controller 服务之间的正确链接:

https://cwiki.apache.org/confluence/display/NIFI/Maven+Projects+for+Extensions#MavenProjectsforExtensions-LinkingProcessorsandControllerServices

这个 GitHub 项目还有一个针对同一概念的完整工作示例: https://github.com/bbende/nifi-dependency-example

从依赖关系的角度来看,扩展处理器和使用 Controller 服务应该是相同的设置,两者都需要能够从另一个 NAR 访问某些内容。

关于java - nifi 1.0.0 - 扩展标准处理器的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39425990/

相关文章:

java - 尝试在 Android Studio 上启动我的第三个 Activity 时被重定向到初始 Activity

java - Jolt 转换 JSON 数组保留其余字段

java - 无法在 Windows 中获取 Java 版本

java - 如何在 libgdx 中删除数组中的多个元素

Java正则表达式搜索值

email - Nifi Email ConsumeIMAP 按主题、从、到和日期过滤

apache-nifi - 文件名中的 nifi 表达式连接文本

Java - 读取 URL 响应

docker - 使用自定义 .nar 和工作流启动 NiFi Docker

amazon-web-services - 使用 NiFi 写入启用 MFA 的 AWS S3 Bucket