• 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执行器

     

     

     

     

  • 相关阅读:
    程序报错怎么进入调试
    va01 无定价过程能被确定
    维护销售区域数据
    SAP VA01 消息 没有用于售达方 XXXXXX 的客户主记录存在
    SAP常见问题与解决方法
    客户没有对功能定义,合作伙伴
    SAP名词解释-售达方|送达方
    英语-20210312
    配置预付款-科目对应关系FBKP
    unzip 解压指定的文件夹或文件 到指定的目录
  • 原文地址:https://www.cnblogs.com/jsjnb/p/13572537.html
Copyright © 2020-2023  润新知