2

我是春天的新手XD ...

我正在尝试创建一个将读取 csv 文件并使用 spring-data-cassandra 将数据插入 Cassandra 数据库的作业。

在我的批处理项目中一切都很好。我可以打包我的批处理并将其部署到 spring xd 到“/module/job/myjob”(我称之为 myjob)。

在“myjob”目录中有 2 个文件夹:config(带有 myjob.xml)和 lib(带有所有依赖项)。

但是当我尝试在 spring xd shell 中创建我的工作时: job create --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 中(我不喜欢把罐子放在那里,但它要求我这样做)然后错误改变了:

 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 并将 jars 放入 $XD_HOME/lib 它可以工作......

更新 2:现在它适用于 /modules/job/myjob/config|lib。我对必须放入模块库目录的所有 jar 进行了挑选。我现在有另一个问题,那就是性能问题。我将为此发布另一个问题。

谢谢

4

1 回答 1

2

这可能是因为 spring-cql 的某些依赖项出现了两次(一次在 myjob/lib 中,一次在 Spring XD 本身中)。虽然我们可能会在 1.x 中为这些场景提供更好的故事,但您可以做的一件事是在 PMML 模块的构建文件中找到灵感。看看 if 如何计算模块依赖项和 XD Dirt 依赖项之间的差异,并且只包括那些必要的。像这样的复杂类加载方案并不总是有正确的解决方案,但这可能会有所帮助。当然,您也可以“手动”完成相同的设置,方法是挑选您需要的罐子。

此外,您的更新评论感觉很奇怪。作业的 xml 定义是否存在job/myjob.xmljob/myjob/config/myjob.xml应该具有绝对零影响并且行为相同。如果您可以分享您的确切设置,我们将有兴趣研究它。

希望这可以帮助

于 2014-07-29T15:02:14.660 回答