本文介绍如何在PySpark中使用开源机器学习库,包括MMLSpark(SynapseML)和Analytics Zoo。
使用MMLSpark(SynapseML)
由于MaxCompute Spark访问外部网络有限制,以下方案介绍如何在MaxCompute Spark中使用MMLSpark。
步骤一:下载JAR包
首先需要在本地客户端下载MMLSpark的所有JAR包:
在本地下载一个Spark客户端。
配置
spark-defaults.conf,添加以下参数:spark.master = local[*] spark.jars.repositories=https://mmlspark.azureedge.net/maven使用Local模式在本地执行以下命令:
$SPARK_HOME/bin/pyspark --packages com.microsoft.ml.spark:mmlspark_2.11:1.0.0-rc1JAR包通常会下载到以下目录:
$HOME/.ivy2/jars将所有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打包
安装Analytics Zoo:
./bin/pip3 install analytics-zoo -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com卸载PySpark(MaxCompute Spark中已包含PySpark):
./bin/pip3 uninstall pyspark打包为压缩包,下文使用名称:
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类冲突)
找到对应BigDL的版本(如0.11.0对应BigDL 0.13.0)。
下载BigDL源码并切换到对应分支:
git clone https://github.com/intel-analytics/BigDL.git git checkout branch-0.13编译打包:
cd BigDL/spark/dl/ mvn clean package -DskipTests用
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该文章对您有帮助吗?