運行python版本的Spark程序

兩種方法:

  1. 使用 spark-submit 解釋執行python腳本
  2. 使用 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章