背景
- 现在有个需求,将spark2的代码迁到spark3上。代码中使用了xgboost包,该包不在集群默认配置中,可以算是一个三方的包了。对应仓库
- 所以我们在提交任务前应该将仓库下载的依赖包放到hdfs目录中,并且提交任务时应该指定好xgboost的jar目录。(下面这些都是我放进去的,因为一直报错,以为是xgb版本的问题,所以都试了试)
报错如下
个人解决方法(每个人的情况不同,本文仅作记录用)
- 因为之前用的spark2.0,scala2.11,历史的xgb-jar包还在放hdfs上,现在将hdfs的三方xgb依赖包2.11版本的去掉,仅保留2.12的即可。(按理说pom文件依赖已经指明了2.12,进程还去解析2.11的xgb依赖,服了。)
- 之前的配置参数:
- <scala.version>2.11.12</scala.version>
<scala.binary.version>2.11</scala.binary.version>
<java.version>1.8</java.version>
<spark.version>2.4.8</spark.version>
<xgboost.version>1.1.2</xgboost.version>
- <scala.version>2.11.12</scala.version>
- 现在的
- <scala.version>2.12.18</scala.version>
<scala.binary.version>2.12</scala.binary.version>
<java.version>1.8</java.version>
<spark.version>3.2.3</spark.version>
<xgboost.version>1.4.1</xgboost.version>
<hadoop.version>3.3.6</hadoop.version>
<hive.version>3.1.3</hive.version>
- <scala.version>2.12.18</scala.version>