原来程序是将所有jar打包到libs目录下,然后运行生成好的run.sh。现在要使用spark-submit将它提交到spark上运行。几经波折之后,终于圆满完成。
首先遇到的问题是如何使用gradle将工程打包成可执行的jar文件。这个问题网上已有答案,就是使用插件
"com.github.johnrengelman.shadow"。gradle的配置如下:
apply plugin: 'com.github.johnrengelman.shadow'
jar {
zip64 true
from {configurations.compile.collect{ it.isDirectory() ? it : zipTree(it)}}
exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
manifest {attributes "Main-class":"com.sinosun.mstp.bigdata.UpsLauncher"}
}
打包的问题解决后,接着遇到了配置文件的问题。原来程序使用的是自己的配置文件,而且配置文件的目录固定为classpath下的conf。使用spark-submit命令后,它会定位到spark的conf目录下。
采用的解决方案是将配置文件打进jar包,运行时将jar包中的配置解压到spar