1、首先,在linux服务器上准备好需要的python环境(个人文件夹下只支持500m):
conda create -y -n pyspark_env -c conda-forge conda-pack python=3.6
conda activate pyspark_env
pip install -i https://mirrors.aliyun.com/pypi/simple/ pyspark==2.3.2 numpy pandas jieba
conda pack -f
将打包好的pyspark_env.tar.gz传到本机电脑上。
2、在hadoop平台上创建一个新任务,选择使用script任务,双击新加的script任务,在负责执行脚本的对应属性上增加如下代码:
./exec-hdfs-cmd.sh hdfs dfs -put pyspark_env.tar.gz hdfs:///user/xxxxx/pyenvs/
并增加节点属性:
user.to.proxy='abc'
azkaban.argument.script.user.execute=false
并在该任务对应的文件夹下上传sh文件和pyspark_env.tar.gz,其中sh文件内容如下:
#! /bin/bash
cmd_stmt=$@
echo "executeing command $cmd_stmt"
eval $cmd_stmt
这里就将python环境文件上传到hadoop系统上了。
3、创建需要使用该python环境的任务(spark),双击spark任务,并在节点属性上增加如下两行:
conf.spark.yarn.dist.archives=hdfs:///user/xxxxx/pyenvs/pyspark_env.tar.gz#py3
conf.spark.yarn.appMasterEnv.PYSPARK_PYTHON=py3/bin/python3.6
此时,该spark任务就有定制的python环境了。