pyspark基于python虚拟环境运行

1.背景

目前大数据使用的是Amazon EMR集群,该集群可根据计算需求变化灵活扩展或收缩集群,就会存在一个问题:当spark任务提交之后,EMR集群会根据计算的需求进行扩展,新扩展的机器上python环境各不相同,并且每次扩展的机器ip不相同(不是同一台机器),对某些第三方包,例如:pandas 还会依赖numpy,并且对版本还有一定要求,必须大于15.4;此时python依赖的冲突就会导致spark任务执行失败。

2.解决方案

鉴于以上问题,通过搭建独立的Python运行环境可以解决以上问题,同时还可以使得单个项目的运行环境与其他项目互不影响。

3.搭建方法

3.1.安装virtualenv

3.1.1.检查服务器是否安装virtualenv

virtualenv --version

3.1.2.没有的话需要安装

pip install virtualenv
3.2.创建python虚拟环境
cd /home/hadoop/code
​
mkdir py_spark_env  #创建目录py_spark_env
​
virtualenv -p /usr/bin/python3.6 pyspark_venv  #选择使用python3.6解释器创建虚拟环境目录
​
source pyspark_venv/bin/activate  #激活虚拟环境变量
​
deactivate  #退出当前虚拟环境
​
删除虚拟环境,只需要删除它的文件夹:rm -rf pyspark_venv
3.3.安装python依赖

3.3.1安装python依赖库
安装之前需要选择虚拟环境,否则就会安装在系统的环境下

source pyspark_venv/bin/activate   #选择虚拟环境
​
pip install pandas   #安装pandas
pip install  pyspark #安装pyspark
以上的依赖库会安装在:
/home/hadoop/code/py_spark_env/pyspark_venv/lib64/python3.6/dist-packages下
需要将其拷贝至
/home/hadoop/code/py_spark_env/pyspark_venv/lib64/python3.6/site-packages下

3.3.2.验证python虚拟环境

选择虚拟环境:source pyspark_venv/bin/activate   
​
在服务器终端执行python: python  #可以看到当前的python环境是3.6.8
以下截图是在本地测试pandas和numpy依赖可用性:

在这里插入图片描述

3.4.spark基于python虚拟环境提交任务

3.4.1.打包python虚拟环境

cd /home/hadoop/code/py_spark_env

zip -r py_spark_venv.zip py_spark_venv

3.4.2.上传至s3或者hdfs

hadoop fs -put py_spark_venv.zip s3://tmp/bigdata/config

hadoop fs -put py_spark_venv.zip /tmp/pyspark

如果还需要增加其它第三方依赖,则需要通过执行步骤3.3安装依赖,再打包成zip,上传至s3或者hdfs上。

3.4.3.spark依赖虚拟环境
请参考以下示例:

spark-submit \
--deploy-mode cluster \
--master yarn \
--driver-memory 2g \
--num-executors 6 \
--executor-memory 4g \
--executor-cores 2 \
--queue default \
--name test \
--archives s3://tmp/bigdata/config/pyspark_venv.zip#pyspark_venv \
--conf spark.pyspark.driver.python=./pyspark_venv/pyspark_venv/bin/python3 \
--conf spark.pyspark.python=./pyspark_venv/pyspark_venv/bin/python3 \
/home/hadoop/tmp/nibo/test.py
注:
  --archives s3://tmp/bigdata/config/pyspark_venv.zip#pyspark_venv              ----会将pyspark_venv.zip解压,解压的目录是"pyspark_venv", #后面的pyspark_venv不能省略,会被解压到每个Executor的工作目录中,仅限于Spark on Yarn模式
  --conf spark.pyspark.driver.python=./pyspark_venv/pyspark_venv/bin/python3    ----指定python执行器
  --conf spark.pyspark.python=./pyspark_venv/pyspark_venv/bin/python3           ----指定python执行器
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值