spring-xd - spring XD 工作和 Cassandra

标签 spring-xd

我是 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/

相关文章:

java - 如何使用 ModuleConfiguration.java 配置 Spring XD 模块?

java - Spring XD, react 器流 : configuration without XML?

java.lang.NoClassDefFoundError : com/sap/conn/jco/JCoException Error

spring-xd - 如何仅使用 java config 在 spring-xd 中创建作业

java - SpringXD部署Stream时出错: StringDeserializer class could not be found

ssl - 如何从 Spring-XD 建立双向 SSL 连接

spring-xd - Spring Cloud 数据流文档

java - Spring Integration Kafka 适配器不产生消息

redis - Spring-xd redis 消息总线从消息中删除 header

spring - 使用Spring jar-tasklet时设置HADOOP_CLASSPATH