最近在使用pyspark,写完程序放到集群里跑的时候,会碰到
no module named 'xxx'
搜索后,发现pyspark包管理的方式有三种
conda
pex
virtual env
conda是python常用的打包工具, 可以通过conda-forge命令行工具,创建conda运行环境
# -c 后面接需要依赖的第三方库 conda create -y -n pyspark_libs -c conda-forge pyarrow pandas conda-pack conda activate pyspark_libs conda pack -f -o pyspark_libs.tar.gz
提交到spark集群的时候, 需要通过--archives指定
spark-submit --archives pyspark_libs.tar.gz xxxVirtualenv
virtualenv 是一个python工具来创建隔离环境, 通过venv-pack打包工具(与conda的conda-forge类似), 来管理python依赖, 它将现在环境打包成一个压缩文件.
python -m venv pyspark_venv source pyspark_venv/bin/activate pip install pyarrow pandas venv-pack venv-pack -o pyspark_venv.tar.gz
同样在spark-submit的时候指定
spark-submit --archives pyspa



