分享知识,分享快乐

0%

spark打包提交python程序

spark-python版本依赖与三方模块方案

(1)使用conda创建python虚拟环境、安装第三方库

假设虚拟环境是pyspark_py36,安装位置是:

1
2
/root/miniconda3/envs/pyspark_py36
此处省略1w个字。

安装的第三方库是:

1
2
3
4
5
source activate pyspark_py36

pip install pandas
pip install sklearn
pip install lightgbm

其他省略1w字。

(2)打包整个虚拟环境

进入虚拟环境目录,压缩整个文件夹

1
2
cd /root/miniconda3/envs/
zip -r -9 -q pyspark_py36.zip pyspark_py36/

压缩后得到压缩包pyspark_py36.zip。

(3)将压缩是虚拟环境上传到hdfs

1
2
# 上传
hdfs dfs –put pyspark_py36.zip /tmp/

(4)新建pyspark程序

没什么好说的,就是普通的pyspark程序,简单的例子如下所示:

1
2
3
4
5
6
7
8
9
# -*- coding: utf-8 -*-

# 测试刚才安装的第三方库是否正常导入
import pandas as pd
import platform

dates = pd.date_range('20130101',periods=6)
print(dates)
print(platform.python_version())

(5) 提交pyspark程序

1
2
3
4
5
6
7
8
9
sudo -u yarn spark-submit \
--master yarn \
--deploy-mode cluster \
--queue bf_yarn_pool.development \
--num-executors 1 \
--executor-memory 1G \
--archives hdfs://ns1/tmp/pyspark_py36.zip#pyenv \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=pyenv/pyspark_py36/bin/python \
hdfs://ns1/tmp/test_spark_env.py