关于pyspark项目安装python依赖的操作

pyspark项目安装python依赖的操作, 解决yarn cluster 模式下的依赖问题

关于pyspark项目安装python依赖的操作

目的: 解决yarn cluster 模式下的依赖问题

一、解决外部依赖: 使用 Virtualenv + HDFS 提交 pyspark任务

1.安装 virtualenv (已经安装了就不用安装)

pip3 install --upgrade pip
python3 -m pip install --user virtualenv

2.创建环境

python3  -m venv pyspark_venv

3. 激活环境

source pyspark_venv/bin/activate

4.安装依赖

pip3 install  venv-pack  (用于打包)
pip3 install pymysql requests  pytispark==2.0.0 (项目依赖)

5.打包依赖

venv-pack -o pyspark_venv.tar.gz

6.上传到Hadoop

hadoop dfs -put pyspark_venv.tar.gz /py/

如果报错: put: `/py/pyspark_venv.tar.gz’: File exists /py 下已经存在pyspark_venv.tar.gz , 要删除后才能上传,但是注意如果有定时任务依赖它,删除会影响定时任务,建议不要经常更新,可以换一个路径或文件名

删除操作:

hadoop dfs -rm /py/pyspark_venv.tar.gz

7.spark 代码:

import os

from pyspark.sql import SparkSession

from app import main



# 指定要使用的python ,相对于yarn的工作路径 (意思是你并不知道在哪里,用相对路径, environment 是解压后的命名)

os.environ['PYSPARK_PYTHON'] = "./environment/bin/python" 



# environment 是解压后的命名
spark = SparkSession.builder.config( 'spark.yarn.dist.archives',"pyspark_venv.tar.gz#environment") .getOrCreate()

如果不希望改代码指定config,也可以通过指定以下来提交任务

export PYSPARK_PYTHON=./environment/bin/python

--conf 'spark.yarn.dist.archives=pyspark_venv.tar.gz#environment' 

二、解决项目模块依赖

1.进入项目压缩文件

cd /data/web/data_warehouse

2.进入项目压缩文件

zip -r ../data_warehouse.zip ./*

chmod 777 ../data_warehouse.zip

cd ..

3.进入项目压缩文件

增加代码  spark.sparkContext.addPyFile("data_warehouse.zip") 在 spark = ....getOrCreate()

4.提交任务


附加参数 --py-files /data/web/data_warehouse.zip
Share