Spark --jars 依赖包的优先级顺序

 

Spark 依赖包来源

我们知道Spark application运行加载依赖有三个地方:

  • SystemClasspath -- Spark安装时候提供的依赖包
  • Spark-submit --jars 提交的依赖包
  • Spark-submit --config "spark.{driver/executor}.extraClassPath=someJar"提交的依赖包

 

Spark 依赖包优先级

三者的优先级顺序是怎样的呢?

我通过测试发现优先级如下:

1. Spark-submit --config "spark.{driver/executor}.extraClassPath=someJar"提交的依赖包

2. SystemClasspath -- Spark安装时候提供的依赖包

3. Spark-submit --jars 提交的依赖包

 

测试环境: 

SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354

1.8.0_171 (Oracle Corporation)

 

三者用途:

spark.{driver/executor}.extraClassPath 优先级最高,一般有相同jar但是版本不同,需要解决冲突时使用;

SystemClasspath 系统安装的包,默认优先使用环境的包,这样更加稳定安全。

spark-submit --jars 在默认spark环境里没有需要的包时,自己上传提供。

 

总结:

A)在我们提交一个spark2 程序时,系统没有的包--jars 提交;

B)在我们需要和系统中已有的包的不同版本时,使用spark.{driver/executor}.extraClassPath来指定。

 

 

 

 

你可能感兴趣的:(spark)