在yarn模式下,会上传jar包到yarn来执行spark程序,如果每次都上传,很耗时间,而且如果是阿里云的机器,上传很慢,180m的jar要上传十几分钟,所以要提前上传到hdfs中去。

spark支持如下几个参数

wKiom1ke8fqwehbBAABhEDbemC4052.png

spark.yarn.jars:只能指定具体jar包,在spark1.6.2(包括)以前,从官网上可以下载一个大的jar包,写上这个jar包即可,但是在2.0过后,就成为了一大堆小包

spark.yarn.archive:这个支持文件夹,但是有一点要注意,

.set("spark.yarn.archive","hdfs://node2:8020/user/xiaokan/assembly/target/scala-2.11/jars")

.set("spark.yarn.archive","hdfs://node2:8020/user/xiaokan/assembly/target/scala-2.11/jars/")

只有第一种写法正确,第二种错误,第二种写法不会读取任何jar包。