python文件在spark集群運行真的麻煩,煩冗
spark運行分為了三個模式,本地模式/client模式/cluster模式
文章目錄
- 本地模式
- client模式
- cluster模式
- 參考
本地模式
現在的spark支持python3了,支持python2的版本已經很落后了,所以需要使用python3來弄,本地模式只要可以運行python xx.py
,spark-submit就可以
spark-submit \
local [*] \
--conf spark.pyspark.python=/usr/bin/python3 \
--conf spark.pyspark.driver.python=/usr/bin/python3 \
xx.py
/usr/bin/python3
替換為本地python解釋器絕對路徑就行。
xx.py 所依賴的庫什么的,直接就在本地裝就可以了,如果是不聯網機器,可以在有網絡的環境里,把依賴的庫下載好,再傳到不聯網機器安裝就行。就是一個pip download
和 pip install
的操作。
client模式
client模式和cluster模式比較麻煩了,需要把所依賴的python環境上傳,不推薦--py-files
,太麻煩了,得弄多少zip包,用--archives
這個參數就行,上傳python環境,推薦用conda創建環境,然后再用conda打包就行。
就是考察對anaconda命令得熟悉。
conda create -y -n pyspark_conda_env -c conda-forge pyarrow pandas conda-pack
conda activate pyspark_conda_env
conda pack -f -o pyspark_conda_env.tar.gz
還需要把 pyspark_conda_env.tar.gz 給上傳到hdfs上面。
hdfs dfs -put pyspark_conda_env.tar.gz /user/hadoop/data/
還有一點,需要把xx.py也上傳
hdfs dfs -put xx.py /user/hadoop/data/
上傳完了,需要在本地解壓pyspark_conda_env.tar.gz,命令參數有用。
最后spark-submit如下
spark-submit \
--master yarn \
--deploy-mode client \
--archives 本地路徑/pyspark_conda_env.tar.gz#environment
--conf spark.pyspark.python=./environment/bin/python \
--conf spark.pyspark.driver.python=本地解壓路徑/pyspark_conda_env/bin/python \
hdfs://user/hadoop/data/xx.py
其中要注意的是 #environment
的寫法就可以把前面一長串給代表了,下面就可以用#
后面的字符來代表了
--archives 本地路徑/pyspark_conda_env.tar.gz#environment
cluster模式
只要跑通了client模式,cluster就簡單多了,不用在本地解壓pyspark_conda_env.tar.gz
這個包了,就直接用了。
spark-submit \
--master yarn \
--deploy-mode cluster \
--archives 本地路徑/pyspark_conda_env.tar.gz#environment
--conf spark.pyspark.python=./environment/bin/python \
hdfs://user/hadoop/data/xx.py
參考
在PySpark程序中使用Conda打包Python環境及第三方庫
官網教程