1. 程式人生 > >win10下Anaconda3在虛擬環境python_version=3.5.3 中配置pyspark

win10下Anaconda3在虛擬環境python_version=3.5.3 中配置pyspark

1. 序
經過了一天的修煉,深深被噁心了,在虛擬環境中配置pyspark花式報錯,由於本人實在是不想解除安裝3.6版的python,所以硬剛了一天,終於摸清了配置方法,並且配置成功,不抱怨了,開講:

2. 需求環境
Anaconda3;(我的是最新版的Anaconda4.3.1(64位))

3. 安裝虛擬環境
1、建立Python虛擬環境。
使用 conda create -n your_env_name python=3.5(2.7、3.6等) anaconda 命令建立python版本為X.X、名字為your_env_name的虛擬環境。your_env_name檔案可以在Anaconda安裝目錄envs檔案下找到。
2、 啟用虛擬環境
activate your_env_name
3、 安裝虛擬環境包
conda install -n your_env_name
至此一個名字是your_env_name的虛擬環境就建好了,它的python版本是3.5版本的,可以通過cmd進入,然後輸入activate your_env_name在輸出python然後檢視到

 

4. 資源準備
spark_2.2.0_bin-hadoop2.7.tgz

根據自己的需求版本,可以下載不同的spark版本,我用的是spark-2.0.1-bin-hadoop2.7,之後解壓,注意存放的路徑一定不能帶空格,例如放到C:\Program Files就不行。這裡我放到了D:\spark;之後就是新增環境變數。
有兩種方法:
1、直接在path中新增環境變數:將D:\spark\spark-2.0.1-bin-hadoop2.7\bin,和D:\spark\spark-2.0.1-bin-hadoop2.7\sbin都加到環境變數中。
2、先新建一個SPARK_HOME的環境變數,值為D:\spark\spark-2.0.1-bin-hadoop2.7,之後將%SPARK_HOME%\bin和%SPARK_HOME%\sbin加入到path中
如果想看是否新增成功,需要將虛擬環境加入到path變數中,然後上移到原始python=3.6的路徑前面,之後再cmd中輸入pyspark就會出現下面的情況。注意:如果虛擬環境的路徑不在原始路徑前面會出現找不到路徑的情況,當然這個路徑只是為了看是否安裝成功,跟在pycharm中執行成功與否沒有任何關係,你也可以再變換回去。


spark的依賴環境中有對hadoop的需求,因此還需要下載對應版本的hadoop,這裡面我下載的是有關hadoop2.7+的資源,無需安裝完整的Hadoop,但需要hadoop.dll,winutils.exe等。根據下載的Spark版本,下載相應版本的hadoop2.7.1。
解壓,新增環境變數(如pyspark新增環境變數一樣,同樣有兩種方法),經過我的測試,好像這裡面的資源不太夠,反正我用著會報錯,因此我選擇了從原始資源中下載bin檔案,然後替換了前面hadoop2.7.1裡面的bin檔案。
要想在PyCharm中呼叫pySpark,需要載入包。將D:\spark\spark-2.0.1-bin-hadoop2.7\python資料夾下pySpark資料夾拷貝到D:\ProgramData\Anaconda3\envs\tensorflow\Lib\site-packages**(注:這個地方是要拷貝到虛擬環境的包路徑)

4. 1關鍵
注意咯,,,接下來這步操作決定我們是否能夠完成配置,,,
1、在D:\spark\spark-2.0.1-bin-hadoop2.7\bin資料夾下找到pyspark檔案,然後用notepad++開啟。
2、找到export PYSPARK_PYTHON然後把這個地方變成export PYSPARK_PYTHON=python3
3、儲存。。。大功告成
4、重啟(可以先略過此步,進行下面驗證,如果驗證還是花式報錯(2)就可以上本步,成為大絕殺,然後可以爽歪歪用pyspark了)
到目前為止,我們的準備工作終於做好了,,,不容易啊。。。其實到現在為止我們也算是安裝完成,,驚不驚喜,意不意外,,沒想到這麼簡單吧,哈哈哈哈哈哈,接下來我們就可以驗證了。。

5. 驗證
在這裡引用雪倫的例子,

新建wordCount.py檔案,寫程式碼
注意setAppName、setMaster中千萬不要帶空格,否則會出現“Java gateway process exited before sending the driver its port number”的報錯

import sys
from operator import add

from pyspark import SparkContext


if __name__ == "__main__":
sc = SparkContext(appName="PythonWordCount")
lines = sc.textFile('words.txt')
counts = lines.flatMap(lambda x: x.split(' ')) \
.map(lambda x: (x, 1)) \
.reduceByKey(add)
output = counts.collect()
for (word, count) in output:
print "%s: %i" % (word, count)

sc.stop()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
其中words.txt中的內容是

good bad cool
hadoop spark mlib
good spark mlib
cool spark bad
1
2
3
4
然後執行,,,你會發現——————————————————————————報錯了是不是,哈哈哈。雖然不知道你報的什麼錯,肯定報錯了,這才是虛擬環境裝pyspark迷人的地方,花式報錯,,彆著急,那是因為我們沒有新增專案的環境變數,在圖中環境變數位置把SPARK_HOME的路徑新增進去,之後再執行


出現


這就說明我們已經大功告成啦啦啦啦啦啦!!!!!!!!!!!!!!
---------------------
作者:Biorad
來源:CSDN
原文:https://blog.csdn.net/loverminger/article/details/76095845
版權宣告:本文為博主原創文章,轉載請附上博文連結!