使用开源机器学习库

更新时间:
复制为 MD 格式

本文介绍如何在PySpark中使用开源机器学习库,包括MMLSpark(SynapseML)和Analytics Zoo。

使用MMLSpark(SynapseML)

由于MaxCompute Spark访问外部网络有限制,以下方案介绍如何在MaxCompute Spark中使用MMLSpark。

步骤一:下载JAR

首先需要在本地客户端下载MMLSpark的所有JAR包:

  1. 在本地下载一个Spark客户端。

  2. 配置spark-defaults.conf,添加以下参数:

    spark.master = local[*]
    spark.jars.repositories=https://mmlspark.azureedge.net/maven
  3. 使用Local模式在本地执行以下命令:

    $SPARK_HOME/bin/pyspark --packages com.microsoft.ml.spark:mmlspark_2.11:1.0.0-rc1
  4. JAR包通常会下载到以下目录:$HOME/.ivy2/jars

  5. 将所有JAR包压缩为一个zip包:

    cd $HOME/.ivy2/jars
    zip -r mml_spark.zip .

步骤二:修改spark-defaults.conf

spark.executor.extraClassPath=./mml_spark.zip/*
spark.driver.extraClassPath=./mml_spark.zip/*

步骤三:提交任务

使用Yarn-cluster模式提交任务到集群中,注意需要包含--py-files

./bin/spark-submit --archives mml_spark.zip \
--py-files mml_spark/com.microsoft.ml.spark_mmlspark_2.11-1.0.0-rc1.jar,mml_spark/com.microsoft.ml.lightgbm_lightgbmlib-2.3.100.jar \
spark_mml.py

使用Analytics Zoo

说明

下文以Analytics Zoo 0.11.0版本为例。

步骤一:Python打包

  1. 安装Analytics Zoo:

    ./bin/pip3 install analytics-zoo -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
  2. 卸载PySpark(MaxCompute Spark中已包含PySpark):

    ./bin/pip3 uninstall pyspark
  3. 打包为压缩包,下文使用名称:python-3.6.14-big-dl.tar.gz

步骤二:上传Python包到MaxCompute Resource

Python包上传到MaxCompute Resource中。

步骤三:准备JAR

将需要的三个JAR包拷贝出来,路径如下:

$python_home/lib/python3.6/site-packages/zoo/share/lib
  - analytics-zoo-bigdl_0.13.0-spark_2.4.6-0.11.1-jar-with-dependencies.jar

$python_home/lib/python3.6/site-packages/bigdl/share/lib
  - bigdl-0.13.0-jar-with-dependencies.jar
  - bigdl-0.13.0-python-api.zip

步骤四:BigDL重新打包(解决log4j类冲突)

  1. 找到对应BigDL的版本(如0.11.0对应BigDL 0.13.0)。

  2. 下载BigDL源码并切换到对应分支:

    git clone https://github.com/intel-analytics/BigDL.git
    git checkout branch-0.13
  3. 编译打包:

    cd BigDL/spark/dl/
    mvn clean package -DskipTests
  4. target目录下生成的bigdl-0.13.1-SNAPSHOT-jar-with-dependencies.jar替换步骤三中的bigdl-0.13.0-jar-with-dependencies.jar

步骤五:配置Python

spark-defaults.conf中添加配置:

spark.hadoop.odps.cupid.resources = [projectname].python-3.6.14-big-dl.tar.gz
spark.pyspark.python = ./[projectname].python-3.6.14-big-dl.tar.gz/python-3.6.14-big-dl/bin/python3

步骤六:提交任务

提交任务时需要携带步骤三和步骤四中生成的JAR包:

./bin/spark-submit \
--jars analytics-zoo-bigdl_0.13.0-spark_2.4.6-0.11.1-jar-with-dependencies.jar,bigdl-0.13.1-SNAPSHOT-jar-with-dependencies.jar,bigdl-0.13.0-python-api.zip \
spark_test.py