一、 環境配置
1)Python環境配置
2)Pycharm可在官網下載
3)以及相應版本的Spark下載。如登錄Spark官網,下載1.6.0的版本。
- 並將壓縮包解壓,解壓至相應路徑,如D:\spark-1.6.0-bin-hadoop2.6。
- 添加 SPARK_HOME = D:\spark-1.6.0-bin-hadoop2.6。
- 並將 %SPARK_HOME%/bin 添加至環境變量PATH。
- 然後進入命令行,輸入pyspark命令。若成功執行。則成功設置環境變量
二、pyspark模塊導入
打開Pycharm,新建一個Python工程,以及新建word_count.py,執行以下代碼,測試能否導入spark包
import os
# Path for spark source folder
os.environ['SPARK_HOME'] = "D:\spark-1.6.0-bin-hadoop2.6"
# Append pyspark to Python Path
sys.path.append("D:\spark-1.6.0-bin-hadoop2.6\python")
sys.path.append("D:\spark-1.6.0-bin-hadoop2.6\python\lib\py4j-0.9-src.zip")
try:
from pyspark import SparkContext
from pyspark import SparkConf
print("Successfully imported Spark Modules")
except ImportError as e:
print("Can not import Spark Modules", e)
sys.exit(1)
以下代碼,必須添加。
# Append pyspark to Python Path
sys.path.append("D:\spark-1.6.0-bin-hadoop2.6\python")
sys.path.append("D:\spark-1.6.0-bin-hadoop2.6\python\lib\py4j-0.9-src.zip")
其添加了Spark的python包中pyspark的路徑,以及py4j的路徑。
pyspark包包含了我們所需要用到的python函數方法。
而py4j允許用Python編譯的python項目可以動態使用java虛擬機中的java對象,並讓java虛擬機返回python對象。
若不添加路徑,則會報錯“ImportError: No module named py4j”以及“ImportError: No module named pyspark”!!!
如果導入成功,則打印” Successfully imported Spark Modules”
三、 編寫word count代碼
from __future__ import print_function
import sys
from operator import add
import os
# Path for spark source folder
os.environ['SPARK_HOME'] = "D:\spark-1.6.0-bin-hadoop2.6"
# Append pyspark to Python Path
sys.path.append("D:\spark-1.6.0-bin-hadoop2.6\python")
sys.path.append("D:\spark-1.6.0-bin-hadoop2.6\python\lib\py4j-0.9-src.zip")
from pyspark import SparkContext
from pyspark import SparkConf
if __name__ == '__main__':
if len( sys.argv ) != 3:
print ('Usage: python input_name output_name')
exit(1)
inputFile = sys.argv[1]
outputFile = sys.argv[2]
sc = SparkContext()
text_file = sc.textFile(inputFile)
counts = text_file.flatMap(lambda line: line.split(' ')).map(lambda word: (word, 1)).reduceByKey(
lambda a, b: a + b)
counts.saveAsTextFile(outputFile)
四、 運行代碼
spark-submit ./word_count.py ./1.txt ./2
運行成功,可在2文件夾得到相應的結果。