INFO-Pyspark环境对接

适用模块
离线开发
具体说明
具体说明
中台对接python conda 虚拟环境
使用示例
场景一、对接conda虚拟python环境
1、采用conda 构建 python虚拟环境
a、在azkaban exec节点上执行以下操作,用azkaban 运维账号执行 (目的是使安装的目录有读取权限)
b、执行 curl -k https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_4.9.2-Linux-x86_64.sh > Miniconda3-py39_4.9.2-Linux-x86_64.sh
INFO-python/pysaprk环境对接 - 图1
c、执行安装命令 bash Miniconda3-py39_4.9.2-Linux-x86_64.sh 设置安装目录为/usr/easyops/miniconda3
INFO-python/pysaprk环境对接 - 图2
d、conda创建虚拟环境,并安装必要包
注释:
# -c 后面是安装的python module, 其中指定了 python=3.9 不然可能会在后续 conda pack时失败
# 指定3.9,但是小版本会随时间变化,比如3.9.18 \ 3.9.17
部署目录给azkaban 授权并切换azkaban 账号执行后续操作
初始化环境变量:source /usr/easyops/miniconda3/etc/profile.d/conda.sh
安装虚拟化环境:conda create -y -n pyspark_env -c conda-forge pyarrow pandas conda-pack python=3.9
INFO-python/pysaprk环境对接 - 图3
2、配置mammut
配置样例
INFO-python/pysaprk环境对接 - 图4
activate_cmd 配置解析
样例 . /usr/easyops/miniconda3/etc/profile.d/conda.sh && conda activate pyspark_env
符号 . 后需要一个空格
env_path 配置解析
执行conda env list, conda create 命令-n 参数值pyspark_env 对应的路径
INFO-python/pysaprk环境对接 - 图5
deactivate_cmd 配置解析
conda deactivate 固定内容
version 配置解析
执行conda activate pyspark_env进入环境后执行 python --version
INFO-python/pysaprk环境对接 - 图6
3、同步重启mammut、azkaban 服务
场景二、对接conda 打包的虚拟环境
1. 采用conda 构建 python虚拟环境。
a、在任意linux 机器上执行
b、执行 curl -k https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_4.9.2-Linux-x86_64.sh > Miniconda3-py39_4.9.2-Linux-x86_64.sh
c、执行安装命令 bash Miniconda3-py39_4.9.2-Linux-x86_64.sh
初始化环境变量:source /usr/easyops/miniconda3/etc/profile.d/conda.sh ##/usr/easyops/miniconda3根据部署信息调整
安装虚拟化环境:conda create -y -n pyspark_env -c conda-forge pyarrow pandas conda-pack python=3.9
2、安装自定义的包,可以使用conda 或 pip,可以指定源
conda activate pyspark_env进入环境
conda install xxx 安装模块
3、打包虚拟环境生成python的虚拟环境包
conda pack -f -o pyspark_env.tar.gz
INFO-python/pysaprk环境对接 - 图7
4、上述conda 导出包拷贝到azkaban执行节点
解压到指定的部署目录,比如 /usr/easyops/pyspark_env,这个目录需要提前创建并给azkaban 用户授权
tar zxvf pyspark_env.tar.gz -C /usr/easyops/pyspark_env/
5、配置mammut
配置样例
INFO-python/pysaprk环境对接 - 图8
env_path 配置详解
包解压的目标路径/usr/easyops/pyspark_env/
activate_cmd 配置详解
source ${env_path}/bin/activate
deactivate_cmd 配置详解
source ${env_path}/bin/deactivate
version 配置详解
执行source ${env_path}/bin/activate
执行 python --version
6、同步重启mammut、azkaban 服务
场景三、pysaprk上传至hdfs集群使用
1、准备python环境
参照场景一或场景二 生成python虚拟环境
2、打包环境 (建议tar.gz格式)
切换至anaconda3/envs目录下
示例:tar -zcvf pyspark3.6.tar.gz pyspark3.6
3、上传环境至hdfs
文件比较大,无法通过猛犸的web页面上传,只能通过hadoop客户端上传
hdfs dfs -put pyspark3.6.tar.gz /user/项目名/xxx/
4、配置pyspark任务
如下所示将传参信息打印并查询hive表数据 pysparkhive.py脚本代码示例:
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("My app").getOrCreate()
datexxx = spark.conf.get("spark.date123")
print('-------------')
print(datexxx)
print('-------------')
my_dataframe = spark.sql("select * from mammut_user.weather_info")
my_dataframe.show()
spark.stop()
INFO-python/pysaprk环境对接 - 图9
INFO-python/pysaprk环境对接 - 图10
INFO-python/pysaprk环境对接 - 图11
INFO-python/pysaprk环境对接 - 图12
spark配置参数说明(需要传递给spark的参数需要设置前缀conf.):
conf.spark.yarn.dist.archives=hdfs://easyops-cluster/user/bdms/pyspark3.6.tar.gz#envs
实际压缩包名称根据自己打包环境决定
压缩的文件会被提取到executor到工作目录下面去,后面到#envs表示,这个文件被解压成到文件名称
conf.spark.yarn.appMasterEnv.PYSPARK_PYTHON=envs/pyspark3.6/bin/python3.6
指定python的环境

作者:林帅