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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章