spark job 使用定制python环境 + 上传额外环境的方法

spark 上传额外的文件的方法

当pyspark 运行在cluster mode下的时候 driver不能直接获取到client上的文件 所以要把一些文件上传上去 pyspark_submmit 在提交的时候有三个参数和上传文件相关

  1. 上传压缩文件
    例如
    --archives ./py_276_cityhash_env.zip#HashEnvDir
    这个参数的意思是 将压缩包 zip文件分发到集群上 将压缩文件解压 解压后的文件全部放在 # 后面指定的文件夹下 HashEnvDir 这个目录下面 也就是说在代码中可以使用 HashEnvDir/xxx.txt 来读取压缩包中的xxx.txt文件 多个压缩文件使用逗号分隔符分割 如果压缩包里面有一个跟文件夹 root_dir/ 那么解压后 将变成 HashEnvDir/root_dir/

  2. 上传一般资源文件
    例如
    --files ./config.json#my_config.json
    这个参数的意思是 将config.json 文件分发到集群上 之后使用my_config.json来访问这个文件 #后面相当于是文件的别名 文件表示使用逗号分隔符分割

  3. 上传代码文件
    有时候提交的pyspark python脚本文件不止一个 互相之间要引用 这时要
    例如
    --py-files ./feature.py
    这个参数的意思是 将feature.py 文件分发到集群上 放在和主脚本在一起的代码目录下 这样就可以引用feature.py中的函数了 文件表示使用逗号分隔符分割

spark 使用特定的python环境的方法

1.以miniconda为例
2. 安装好miniconda
3. 使用conda create -n $myenv_name python=3.6 并用python=3.6来指定对应python环境的版本
4. 在创建好的环境(在miniconda 安装目录的env文件夹下面)使用pip 安装好需要的包
5. 使用zip 命令将 env文件夹下面对应$myenv_name的文件夹打包 该文件夹包含了所有的 环境所需的文件 打包后 发送到集群的各台机器上即可工作
6. 在spark提交命令中 使用 --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./HashEnvDir/hash_np_env27/bin/python\ 来指定对应的python指定文件 HashEnvDir 是将压缩包解压后的目录. hash_np_env27是$myenv_name python是对应环境下面的python可执行文件

完整样例

这个例子同时包含了使用spark-submmit 提交任务时 使用了特定的python环境 以及依赖来自于其他文件的内容等 以及如何上传压缩包和代码文件

SPARK_HOME="/data01/opt/spark-2.2.1-bin-2.7.3"
SUDO_PREF="sudo -u profile"

$SUDO_PREF ${SPARK_HOME}/bin/spark-submit\
    --master yarn\
    --deploy-mode cluster\
    --files ${SPARK_HOME}/conf/hive-site.xml\
    --num-executors 50\
    --executor-cores 4\
    --executor-memory 16G\
    --driver-memory 16G\
    --queue profile\
    --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./HashEnvDir/hash_np_env27/bin/python\
    --archives /home/sdev/python_env/hash_np_env27.zip#HashEnvDir\
    --name "s1_recallkey_d${3}_h${4}_ds${5}"\
    ./s1_matchtag_recallkey_rand_neg.py\
    --input_proc_name $6\
    --output_proc_name $7\
    --nation $1\
    --language $2\
    --data_date $3\
    --hour $4\
    --downsample $5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值