我是 Spring 新手 XD ...
我正在尝试创建一个作业,该作业将读取 csv 文件并使用 spring-data-cassandra 将数据插入 Cassandra 数据库。
我的批处理项目一切正常。我可以打包我的批处理并将其部署到 spring xd 中的“/module/job/myjob”(我称之为 myjob)。
在“myjob”目录中有 2 个文件夹:config(包含 myjob.xml)和 lib(包含所有依赖项)。
但是当我尝试在 spring xd shell 中创建我的工作时: 创建作业 --definition myjob --name test1
我收到此错误:
Command failed org.springframework.xd.rest.client.impl.SpringXDException:
Unexpected exception parsing XML document from URL
file:/home/fmarchand/programs/spring-xd/spring-xd-1.0.0.RC1/xd/
modules/job/myjob/config/myjob.xml];
nested exception is java.lang.IllegalStateException: Unable to load schema
mappings from location [META-INF/spring.schemas]
在 spring-xd 日志中:
Caused by: java.io.FileNotFoundException: /home/fmarchand/programs/spring-xd/spring-xd-1.0.0.RC1/xd/lib/spring-cql-1.0.1.RELEASE.jar (No such file or directory)
我尝试将 spring-cql-1.0.1.RELEASE.jar 放入 XD_HOME/lib 中(我不喜欢将 jar 放在那里,但它要求我这样做),然后错误发生了变化:
Command failed org.springframework.xd.rest.client.impl.SpringXDException: Unexpected
exception parsing XML document from URL [file:/home/fmarchand/programs/spring-xd/spring-xd-
1.0.0.RC1/xd/modules/job/myjob/config/myjob.xml]; nested exception is
org.springframework.beans.FatalBeanException: Class
[org.springframework.data.cassandra.config.xml.CassandraNamespaceHandler] for namespace
[http://www.springframework.org/schema/data/cassandra] does not implement the
[org.springframework.beans.factory.xml.NamespaceHandler] interface
我肯定错过了一些东西!
更新:如果我将 myjob.xml 放在 $XD_HOME/modules/job 中并将 jar 放在 $XD_HOME/lib 中,它就可以工作...
更新 2:现在它可以与/modules/job/myjob/config|lib 一起使用。我对必须放入模块库目录中的所有 jar 进行了挑选。我现在还有另一个问题,是性能问题。我将为此发布另一个问题。
谢谢
最佳答案
这可能是因为 spring-cql 的某些依赖项出现了两次(一次在 myjob/lib 中,一次在 Spring XD 本身中)。 虽然我们可能会在 1.x 中为这些场景提供更好的故事,但您可以做的一件事是在 the PMML module 的构建文件中寻找灵感。 。了解 if 如何计算模块依赖项和 XD Dirt 依赖项之间的差异,并且仅包含必要的依赖项。像这样的复杂类加载方案并不总是有正确的解决方案,但这可能会有所帮助。当然,您也可以“手动”完成相同的设置,通过挑选您需要的 jar 。
此外,你的更新评论感觉很奇怪。无论作业的 xml 定义是在 job/myjob.xml
中还是在 job/myjob/config/myjob.xml
中,影响绝对为零,并且行为相同。如果您可以分享您的确切设置,我们将有兴趣进行研究。
希望这有帮助
关于spring-xd - spring XD 工作和 Cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24996984/