Spring Cloud Data Flow附加libpath

时间:2018-08-09 21:17:59

标签: java spring spring-boot hadoop-streaming spring-cloud-dataflow

我目前正在使用SCDF进行春季批处理项目。

在批处理过程中,一个步骤是使用org.springframework.data.hadoop.mapreduce.StreamJobFactoryBean类实例化流作业。通过内部过程,它从另外两个jar中创建一个jar文件,以便在hadoop中执行最终的jar文件。

问题是“待合并”的jar文件之一在我的启动jar内,而JarBuilder尝试合并它时,由于它不是有效路径,因此无法将其作为文件加载。 / p>

程序显示此异常:

Caused by: java.io.FileNotFoundException: /home/cloudera/Projects/.../myproyect/target/my-project-2.0.0-SNAPSHOT.jar!/BOOT-INF/lib/hadoop-streaming-2.6.0-mr1-cdh5.14.2.jar (No such file or directory)
        at java.util.zip.ZipFile.open(Native Method) ~[na:1.8.0_151]
        at java.util.zip.ZipFile.<init>(ZipFile.java:225) ~[na:1.8.0_151]
        at java.util.zip.ZipFile.<init>(ZipFile.java:155) ~[na:1.8.0_151]
        at java.util.jar.JarFile.<init>(JarFile.java:166) ~[na:1.8.0_151]
        at java.util.jar.JarFile.<init>(JarFile.java:103) ~[na:1.8.0_151]
        at org.apache.hadoop.streaming.JarBuilder.merge(JarBuilder.java:71) ~[hadoop-streaming-2.6.0-mr1-cdh5.14.2.jar!/:na]
        at org.apache.hadoop.streaming.StreamJob.packageJobJar(StreamJob.java:631) ~[hadoop-streaming-2.6.0-mr1-cdh5.14.2.jar!/:na]
        at org.apache.hadoop.streaming.StreamJob.setJobConf(StreamJob.java:844) ~[hadoop-streaming-2.6.0-mr1-cdh5.14.2.jar!/:na]

解决方案

此问题的解决方案之一是从我的启动应用程序中删除此库,并将其放在外部 lib 文件夹中。然后在类路径中包含该文件夹就足以解决FileNotFoundException

实际问题

问题在于此应用程序将在Spring Cloud Data Flow中运行。有什么方法可以将外部lib文件夹添加到SFDC? 然后,当SCDF启动任务时,可以将其类路径设置为lib文件夹。

谢谢

0 个答案:

没有答案