Spark執行Python程式碼
阿新 • • 發佈:2019-02-10
兩種方法:
- 使用 spark-submit 解釋執行python指令碼
- 使用 python 解釋執行python指令碼
1. 使用Spark-submit解釋執行python指令碼
Python指令碼中需要在開頭匯入spark相關模組,呼叫時使用spark-submit提交,示例程式碼如下:
===========================================================
"""odflow.py""" from pyspark import SparkContext fileDir = "/TripChain3_Demo.txt" # sc = SparkContext("local", "ODFlow") sc = SparkContext("spark://ITS-Hadoop10:7077", "ODFlow") lines = sc.textFile(fileDir) # python不能直接寫多行的lambda表示式,所以要封裝在函式中 def toKV(line): arr = line.split(",") t = arr[5].split(" ")[1].split(":") return (t[0]+t[1]+","+arr[11]+","+arr[18],1) r1 = lines.map( lambda line : toKV(line) ).reduceByKey(lambda a,b: a+b) # 排序並且存入一個(repartition)檔案中 r1.sortByKey(False).saveAsTextFile("/pythontest/output")
===========================================================
釋出命令為:
spark-submit \
--master spark://ITS-Hadoop10:7077 \
odflow.py
2. 使用 python 解釋執行python指令碼
直接用python執行會出現錯誤:
ImportError: No module named pyspark
ImportError: No module named py4j.java_gateway
缺少pyspark和py4j這兩個模組,這兩個包在Spark的安裝目錄裡,需要在環境變數裡定義PYTHONPATH,編輯~/.bashrc或者/etc/profile檔案均可
vi ~/.bashrc # 或者 sudo vi /etc/profile
# 新增下面這一行
export PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH
# 使其生效
source ~/.bashrc # 或者 sudo source /etc/profile
然後關閉終端,重新開啟,用python執行即可
python odflow.py
python odflow.py