Submit Spark Job
我们在提交spark job到集群时通常使用两种做法来处理依赖jar。
方法一:仅提交job jar,dependency jar 通过单独一个一个上传到lib目录下引入。
方法二:把dependency jar 和 job jar 一起打包成一个 fat jar。
方法一优缺点:
优点:占用带宽资源少,修改job 调试时传输量小,适合带宽少的情况。
缺点:dependency jar 需要一个一个手动提交,需要根据exception来确定需要用到的jar,这个过程耗时而且低效。
方法二优缺点:
优点:不用自己一个一个去找dependency jar, 工具自动写入运行。
缺点:每次修改job 代码需要传输量大,带宽小时很慢很慢。打入很多不需要的jar。
Copy Dependency Jar
task copyJar(type:Copy){
from configurations.runtime
into ('build/libs/dependecies')
}
Package an executive jar
1. 配置jar
jar {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
manifest {
attributes 'Main-Class': 'net.petrikainulainen.gradle.HelloWorld'
}
}
2. shadowJar
shadowJar { baseName = 'test-tools' classifier = null version = "1.0.0" zip64 = true manifest { attributes 'Main-Class': 'net.petrikainulainen.gradle.HelloWorld' } }