Spark 项目 jar 包加载顺序
当我们编写的 Spark 项目的依赖较多时,提交运行任务时便很容易出现因为包冲突导致的 java.lang.NoSuchMethodError
报错。原因是当用户提供 Spark 任务运行时,Spark 需要首先加载自身的依赖库(jars),一般位于 $SPARK_HOME/jars
目录下,然后再加载用户提交的 jar 包,当两者存在同样的 jar 但是版本不同时,如果高低版本不能互相兼容,则会报错。
Spark jar 包加载顺序:
SystemClassPath: $SPARK_HOME/jars
即 Spark 安装时候提供的依赖包UserClassPath: Spark-submit --jars
用户提交的依赖包UserClassPath: Spark-submit app.jar
用户的 Spark 任务 jar 包