XGBoost4J-Spark 1.0.0运行流程与排坑指南

0.前言

XGBoost4J-Spark能够让我们在Spark上玩XGBoost,对于海量数据来说应该是很有用的。这篇文章主要介绍了将其官网提供的Demo部署在Linux上运行的全过程。通过此Demo在Spark上用XGBoost完成iris数据集的多分类任务。

此次选用的是最新的稳定版XGBoost4J-Spark 1.0.0,之前0.81版本的Windows部署可以参考这里。不过其实都是互通的,两边都看看也无妨。我这里会将我选择、填坑时的思路全部记录下来,需要注意的地方我会用这样进行标注,以供你参考,(●´З`●)。

1.确认版本

作为最基础的demo,要考虑的版本包括:

  • XGBoost4J-Spark
  • Scala
  • Spark
  • Python
  • Hadoop
  • Java

在安装之前一定要根据自己的配置选择合适的版本,确保两两之间版本契合,否则后面会报一堆错。我选择的版本如下:

模块 版本号
XGBoost4J-Spark 1.0.0
Scala 2.11.8
Spark 2.4.5
Python 3.5.2
Hadoop 2.6
Java 1.8.0

具体考量如下:首先是选择了当前的最新稳定版——1.0.0的XGBoost4J-Spark,然后在它的官网文档里发现0.9之后的版本仅支持Spark2.4+了,具体原因摘抄在下面:

XGBoost4J-Spark now requires Apache Spark 2.4+. Latest versions of XGBoost4J-Spark uses facilities of org.apache.spark.ml.param.shared extensively to provide for a tight integration with Spark MLLIB framework, and these facilities are not fully available on earlier versions of Spark.

但我Spark是卑微的2.2.0,只能重新装一个高版本了。然后选择了Spark 2.4.5 Prebuild for Apache Hadoop 2.6。这里Hadoop的版本2.6.0就确定好了,好在Hadoop和Spark互通这块网上排坑指南比较多,在实际操作时这块也没出问题,甚至我用的是hadoop-2.6.0-cdh5.7.0也没啥问题,好评。然后这里有个点请注意一下,在Spark下载界面有这么一段话:

Note that, Spark is pre-built with Scala 2.11 except version 2.4.2, which is pre-built with Scala 2.12.

所以对于Spark 2.4.5来说,给咱们的jars是基于Scala 2.11的(当然你也可以选择 Pre-built with Scala 2.12 and user-provided Apache Hadoop这个版本,然而我试了一下发现在spark-submit这个版本的时候坑太多了,比起填这个坑还是转Scala2.11简单点,遂弃之)。
于是Scala的大版本也确定好了,在选择Scala的时候小心每个小版本里也有很多更迭,导致一些方法找不到,最后在尝试过很多小版本后敲定了Scala 2.11.8,至少在这个Demo里没有表现出特别的问题。
另外提一嘴Python,版本需要2.7+,尽量就Python 3+就完事了,不然会在训练的时候报错ImportError: No module named argparse,从而导致出现XGBoostError: XGBoostModel training failed这种诡异的错误。
JDK就是1.8.0,没啥好说的,也没出问题,就写在这以防有老哥要看。

2.Maven配置

要注意各个版本的一一对应,要查包的对应版本的话请在MvnRepository里查找关键字。
这里直接放整体的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.taipark.xgboost</groupId>
  <artifactId>sonarAnalysis</artifactId>
  <version>1.0</version>
  <inceptionYear>2008</inceptionYear>
  <properties>
    <scala.version>2.11.8</scala.version>
  </properties>

  <repositories>
    <repository>
      <id>scala-tools.org</id>
      <name>Scala-Tools Maven2 Repository</name>
      <url>http://scala-tools.org/repo-releases</url>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>scala-tools.org</id>
      <name>Scala-Tools Maven2 Repository</name>
      <url>http://scala-tools.org/repo-releases</url>
    </pluginRepository>
  </pluginRepositories>

  <dependencies>
    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>${scala.version}</version>
    </dependency>
    <dependency>
      <
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值