spark-submit之使用pyspark


linux下,執行pyspark代碼 —— 實測有效:但是並不是所有的包都能夠成功,一些很復雜的包或者對C依賴很深的包例如 numpy, pandas, scipy等,無法通過本方法實現,實現可以參考https://www.cnblogs.com/qi-yuan-008/p/12199152.html;對一些比較簡單的 第三方site-packages包,本方法則可以實現。

1. 安裝pycharm或者spyder,然后在其中編寫代碼和執行語句

2. 通過job來提交,即spark-submit提交,下面主要講這種方法

首先假設,自己寫的 *.py 文件包含了這些包,即通過import導入

import os
from pyspark import SparkContext
from pyspark.sql.session import SparkSession
from pyspark.sql import HiveContext
import jieba
from collections import Counter
from operator import itemgetter
import time
import ast
from pyspark.sql.types import StructField, StructType, StringType
from pyspark.sql import SQLContext

3. 那么利用spark-submit提交時,就需要將需要的包全部打包在一個zip文件中,注意的是:需要的包要先在同一個目錄下,然后在該目錄一起打包成zip文件,例如在有以上包的情形下,可以:

第一:建立一個文件夾,來存放所有包:

mkdir lib_words

第二:復制所需的包(一般都在python的安裝目錄的lib下,其中第三方庫在site-packages里面)到該文件夾下,因為一個個選比較麻煩,所以就一起打包了,但是並未復制和打包pyspark庫的包

cp -r /usr/local/python3.7/lib/python3.7/* /home/lib_words
cp -r /usr/local/python3.7/lib/python3.7/site-packages/* /home/lib_words

第三:打包zip

zip -r /home/lib_words.zip ./*

4. 在命令行,使用spark-submit提交 *.py主文件,並使用參數 '--py-files' 導入zip文件,然后回車執行

spark-submit /home/pycharm_projects/cut_words/cut_words_fre.py --py-files='/home/lib_words.zip'

 

附加首先通過在程序里面直接寫入pyFiles參數(在SparkContext的參數中),然后直接提交運行:spark-submit /home/pycharm_projects/cut_words/cut_words_fre.py,實測也可

pyFiles=["/home/lib_words.zip"]#壓縮的包的所在路徑,可行
#pyFiles=["/home/test1.py","/home/test2.py"] #據說也可,但是因為文件太多,沒有測試
sc = SparkContext('local', 'test', pyFiles=pyFiles)

結果最后,其中有一行會出現:

19:55:06 INFO spark.SparkContext: Successfully stopped SparkContext

 

附加2:通過 sc.addPyFile 方法也可以實現 (推薦)

sc = SparkContext('local', 'test')
sc.addPyFile(r'/root/test_words/lib_words.zip')

 

注:如果只有pyspark的包,可能不需要加入 *.zip 文件(未測試)

參考:

https://blog.csdn.net/lmb09122508/article/details/84586947

https://blog.csdn.net/MrLevo520/article/details/86738109

https://blog.csdn.net/qq_23860475/article/details/90479702


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM