一、開發PySpark 所需準備環境
- 安裝python環境:下載安裝Anaconda。參考:https://lixinkuan.blog.csdn.net/article/details/104636483
- 安裝PyCharm:下載安裝PyCharm。
- 官網下載Spark安裝包:由於PyCharm開發spark 需要本地Spark環境,所以要在官網中下載Spark安裝包到本地(這裏我們下載Spark1.6版本)。
- 進入Spark官網,找到對應的Spark版本下載。
- 將下載好的安裝包解壓到本地某個路徑(路徑中不要有空格和中文)
- 將解壓的路徑中的…spark….\python\lib下的以下兩個壓縮包解壓
注意:
- py4j是一個用 Python和Java編寫的庫。通過Py4J,Python程序能夠動態訪問Java虛擬機中的Java對象,Java程序也能夠回調Python對象。
- pyspark 是 Spark 爲 Python 開發者提供的 API。
二、PyCharm開發Spark應用程序
使用PyCharm開發Spark應用環境需要配置Python環境,我們使用的Spark1.6版本,Spark2.1以下版本不支持python3.6版本,所以我們使用兼容性比較好的Python3.5版本,需要在PyCharm中配置。具體如下:
2.1、打開PyCharm創建新的項目
點擊Create創建。
2.2、配置項目的結構
選中項目,點擊File->Settings…->點擊 Project:xxx:->Project Structure
配置完成後,項目根目錄下多了一個lib目錄:
2.3、創建一個Spark應用程序腳本(WordCount爲例)
創建一個package:
右鍵創建一個目錄,目錄中創建一個文件,內容如下:
創建python腳本,內容如下:
from pyspark import SparkConf
from pyspark import SparkContext
if __name__ == '__main__':
conf = SparkConf().setMaster("local").setAppName("wordcount")
sc = SparkContext(conf=conf)
lines = sc.textFile("../data/words")
words = lines.flatMap(lambda line:line.split(","))
pair_words = words.map(lambda word:(word,1))
result = pair_words.reduceByKey(lambda a,b:a+b)
print(result.collect())
運行,報錯如下,需要配置SPAKR_HOME:
2.4、配置SPARK_HOME
寫好pyspark腳本後,在運行python腳本之前,要配置下SPARK_HOME:
找到本地解壓的spark安裝包路徑,配置SPARK_HOME,完成即可。
也可以在Defaults中配置好SPARK_HOME,每次創建pyspark腳本運行時,就不用手動來設置。
注意:這裏的SPARK_HOME也可以在本地系統中的環境變量中配置好,在pycharm中運行pyspark腳本時就不會找不到SPARK_HOME,兩種方式都是可以的。在系統中配置好環境變量要重啓pycharm。
2.5、運行腳本
注意:運行腳本時有可能出錯:
指定pyspark使用的python版本即可(與項目的Project Interpreter使用的python版本路徑一致):
在代碼中可以加入:
import os
os.environ["PYSPARK_PYTHON"] = "C:\\Users\\wubai\\Anaconda3\\envs\\pyspark\\python.exe"
也可以在系統中配置環境變量(要重啓Pycharm):
也可以在Edit Configurations…中加入環境變量:
以上三種方式任選其一即可。