Python 3.x 如何使用virtualenv(包括python3解释器)打包pyspark代码?
我正在尝试让我的pyspark应用程序在纱线集群上运行。应用程序使用某些需要python3的库。但是,纱线簇使用python2,未安装python3。有没有办法用python3和所有python3核心库打包我的pyspark应用程序 我一直在按照这些步骤创建虚拟环境Python 3.x 如何使用virtualenv(包括python3解释器)打包pyspark代码?,python-3.x,pyspark,virtualenv,yarn,python-venv,Python 3.x,Pyspark,Virtualenv,Yarn,Python Venv,我正在尝试让我的pyspark应用程序在纱线集群上运行。应用程序使用某些需要python3的库。但是,纱线簇使用python2,未安装python3。有没有办法用python3和所有python3核心库打包我的pyspark应用程序 我一直在按照这些步骤创建虚拟环境 virtualenv -p /usr/bin/python3 venv/ source venv/bin/activate pip install -r requirements.txt venv-pack -o environme
virtualenv -p /usr/bin/python3 venv/
source venv/bin/activate
pip install -r requirements.txt
venv-pack -o environment.tar.gz
/usr/bin/spark-submit --master yarn --executor-cores 1 --num-executors 15 --queue wesp_dev --deploy-mode cluster --conf "spark.driver.extraJavaOptions=-DENVIRONMENT=pt" --conf "spark.executor.extraJavaOptions=-DENVIRONMENT=pt" --name "EndpointAttackDetectionEngine" --class com.telus.endpointAttackDetectionEngine.AppMain --keytab $KEY_TAB --principal $PRINCIPAL --driver-memory=4G --archives environment.tar.gz#environment --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./environment/bin/python --conf spark.executorEnv.LD_LIBRARY_PATH=./environment/lib/ --conf spark.yarn.appMasterEnv.LD_LIBRARY_PATH=./environment/lib/ test.py
但是,当我按照上面的步骤创建虚拟环境时,会出现许多问题
spark.ExecuteEnv.LD_LIBRARY_路径=./environment/lib/
和spark.Thread.appMasterEnv.LD_LIBRARY_路径=./environment/lib/
中指定它致命的Python错误:Py\u Initialize:无法获取区域设置编码
ModuleNotFoundError:在纱线集群中运行pysark应用程序时,没有名为“encodings”的模块。
。我从/usr/lib64/python3.6手动复制了python3的编码和其他核心模块,但没有解决这个问题李>
所有这些让我相信,当我用venv打包我的环境时,我遗漏了一些东西。必须有更好的方法来做到这一点。我最近也遇到了同样的情况 当您想在未安装Python3的集群中使用Python3中的pyspark时,您确实可以遵循使用virtualenv的策略 但是,您必须仔细选择构建virtualenv的工具。正如您所注意到的,通常的virtualenv命令并没有完全打包所需的Python3文件 使用基于conda Python3的virtualenv,我成功地在Python2.7纱线集群中以纱线集群和客户端模式使用了pyspark 这是我的分步指南:
打包独立python程序的更好工具是pex。如果您还必须打包解释器,那么您将需要更高级的工具。我相信我可以做这样的事情,可能还有其他人(等等)你好,有什么答案吗?我也有同样的问题。
docker pull centos:centos7
docker run --entrypoint "/bin/sh" -it <image_id_centos:centos7>
yum install bzip2
curl -O https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux-x86_64.sh
bash Anaconda3-5.3.1-Linux-x86_64.sh
source ~/.bashrc
conda update conda
conda create -n myvenv python=3.6 anaconda
conda activate myvenv
conda install -n myvenv pip
pip install -r requirements.txt
cd /root/anaconda3/envs/myvenv
tar zcvf myvenv.tar.gz *
docker cp <container-id>:/root/anaconda3/envs/myvenv/myvenv.tar.gz ~/Downloads
${SPARK_HOME}/bin/spark-submit \
--master ${CLUSTER_MANAGER} \
--deploy-mode ${DEPLOY_MODE} \
--num-executors ${NUM_EXECUTORS} \
--driver-memory ${DRIVER_MEMORY} \
--executor-memory ${EXECUTOR_MEMORY} \
--executor-cores ${EXECUTOR_CORES} \
--archives ./myvenv.tar.gz#ENV \
--conf spark.pyspark.python=./ENV/bin/python \
--conf spark.pyspark.driver.python=./ENV/bin/python \
--py-files my_project.zip \
main.py "$@"