gpt4 book ai didi

java - 在 StreamSets 版本 2.5 中使用 StreamSets 3.8 的 JDBC 元数据处理器

转载 作者:太空宇宙 更新时间:2023-11-04 09:23:11 26 4
gpt4 key购买 nike

我的团队需要使用旧版本的 StreamSet,即 2.5 版。但在 3.8 版本中,我们希望在旧环境中包含一些重要的处理器,即 JDBC 元数据处理器。

已完成的工作如下:

  1. 使用 StreamSets 版本 2.5.1.1 创建示例自定义处理器项目

    mvn archetype:generate -DarchetypeGroupId=com.streamsets -DarchetypeArtifactId=streamsets-datacollector-stage-lib-tutorial -DarchetypeVersion=2.5.1.1 -DinteractiveMode=true

  2. 根据StreamSets 3.8中的JDBC Meta Data类修改代码,并引用POM中的库到StreamSets 3.8:

2.1 流集-datacollector-api

2.2 流集-datacollector-jdbc-protolib

  • 将定制的jar打包并上传到StreamSets UI的外部库。

  • 将依赖项 jar 上传到 StreamSets UI:

  • 4.1 流集-datacollector-api-3.8.jar

    4.2 流集-datacollector-jdbc-protolib-3.8.jar

    一切都找到了,除了我上传的内容

    streamsets-datacollector-jdbc-protolib-3.8.jar

    然后重新启动StreamSets,日志中出现错误:

    java.lang.NoClassDefFoundError: com/streamsets/pipeline/api/base/configurablestage/DPushSource
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at com.streamsets.pipeline.BlackListURLClassLoader.findClass(BlackListURLClassLoader.java:77)
    at com.streamsets.pipeline.SDCClassLoader.loadClass(SDCClassLoader.java:341)
    at com.streamsets.pipeline.SDCClassLoader.loadClass(SDCClassLoader.java:323)
    at com.streamsets.datacollector.stagelibrary.ClassLoaderStageLibraryTask.loadStages(ClassLoaderStageLibraryTask.java:325)
    at com.streamsets.datacollector.stagelibrary.ClassLoaderStageLibraryTask.initTask(ClassLoaderStageLibraryTask.java:192)
    at com.streamsets.datacollector.task.AbstractTask.init(AbstractTask.java:66)
    at com.streamsets.datacollector.task.CompositeTask.initTask(CompositeTask.java:48)
    at com.streamsets.datacollector.task.AbstractTask.init(AbstractTask.java:66)
    at com.streamsets.datacollector.task.TaskWrapper.init(TaskWrapper.java:44)
    at com.streamsets.datacollector.main.Main$1.run(Main.java:101)
    at com.streamsets.datacollector.main.Main$1.run(Main.java:98)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at com.streamsets.datacollector.main.Main.doMain(Main.java:98)
    at com.streamsets.datacollector.main.DataCollectorMain.main(DataCollectorMain.java:46)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.streamsets.pipeline.BootstrapMain.main(BootstrapMain.java:308)

    我注意到这个类存在于 API-3.8 jar 中,而 API-2.5 中的类也存在,但包路径不同,

    API-3.8com/streamsets/pipeline/api/base/configurablestage/DPushSource

    API-2.5com/streamsets/pipeline/configurablestage/DPushSource

    我缺少任何使其正常工作的提示吗?谢谢。

    最佳答案

    不用说,自 StreamSets Data Collector 2.5.0 以来,有许多修复和增强功能,我强烈建议您升级。

    话虽如此,由于 DPushSource 特定于源,并且您专注于处理器,因此最简单的方法就是简单地删除 JDBC 源。删除 jdbc-protolib/src/main/java/com/streamsets/pipeline/stage/origin/jdbc 下的所有内容,然后重试。

    关于java - 在 StreamSets 版本 2.5 中使用 StreamSets 3.8 的 JDBC 元数据处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58057434/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com