實作win10系統下pycharm與ubuntu的對接
- 1.前提說明
- 2.然後标一下我分别在哪一步遇到問題的:
- 3.以下開始詳細說明每個步驟的流程
-
- 1.在win10中下載下傳專業版的pycharm
- 2.打開ubuntu,将預設版本設定為python3.5
- 3.安裝pyspark
- 4.win10中配置pycharm中的檔案,使pycharm目錄連接配接到ubuntu目錄
- 5.在pycharm中運作代碼,并成功輸出結果
- 4.總結
- 5. 後期更新:
1.前提說明
在學習spark過程中,使用到win系統上的pycharm與ubuntu進行對接,這裡記錄自己所做的實作對接的流程,其實流程很簡單,但是我在這個過程中出錯很多,搞得心态都要崩了,覺得有必要記錄一下,給出同樣錯的做個參考。
環境:
pycharm專業版
win10
ubuntu16.0
pip3 版本10.0.0
pyspark3.0.2
python預設3.5
需要下載下傳的包放在後面的流程中
先說一下大概流程和問題,最後放詳細的過程
- 在win10中下載下傳專業版的pycharm
- 打開ubuntu,将預設版本設定為python3.5
- 安裝pyspark
-
win10中配置pycharm中的檔案,使pycharm目錄連接配接到ubuntu目錄,連接配接時請提前将ubuntu中的hadoop節點開啟:sbin/start-dfs.sh
(是否連接配接成功的實驗:将pycharm中的随便一個py檔案在pycharm的terminal中上傳到ubuntu的目錄下)
- 在pycharm中運作代碼,并成功輸出結果
2.然後标一下我分别在哪一步遇到問題的:
第3步驟,遇到的問題:pyspark下載下傳出錯,pip問題
建議: 這是一個需要注意的點,在下載下傳之前得先看一下有沒有pip和pip的版本,因為python預設版本是3.x的,是以不要用pip下載下傳,而是使用pip3。其次pip3(pip)版本最好是10.0.0,不要太高太低,否則後面運作代碼早晚的報錯。
當需要更新pip的時候,就直接指定10.0.0的去更新,如果直接更新到21.0版本的話會報錯,導緻pip直接用不了,那個報錯我現在也沒解決,是以後面又費勁兒吧啦的删除pip3,下載下傳了pip10.0.0的包進行手動安裝。一般來說隻要pip3 ok了,下載下傳pyspark也就沒什麼問題了。
當pip3也正常之後發現pyspark依然報錯,那你看一下報錯的最後一行有沒有提示‘–user’這個單詞,如果有的話,就在下載下傳指令之後加上–user,比如:pip3 install pyspark --user
這個适用于任何報錯後出現–user的,都可以指令後加上這個單詞再次運作
第4步驟,遇到的問題:連接配接成功但上傳檔案報錯
建議: 整個連接配接過程在做之前最好先理好頭緒之後一步到位,不要自己都搞不清楚對接目錄,弄得一團亂麻,個人覺得後期改起來也費勁兒,這裡就是明确兩點:
一:你想用pycharm的哪個目錄對接ubuntu的哪個目錄,倆目錄搞清楚。
二:在setting設定時,有一個過程一定記得寫為python3.5(這裡說就是提醒需要注意,後面會有詳細說明)
第5步驟,遇到的問題:代碼運作報錯
建議: 在這裡好不容易都弄完了,但是代碼又出錯了,這裡我找到了一個解決辦法放在後面的步驟中,如果沒有出錯可以直接運作的就可以忽略不看,如果有相同報錯的可以看一下希望能有些幫助。
這裡還有一個Ubuntu突然斷網導緻連接配接中斷運作出錯的,後面也會詳細說一下。
3.以下開始詳細說明每個步驟的流程
1.在win10中下載下傳專業版的pycharm
在做實驗時,聽老師說對接用專業版的可以,社群版本的不太行,但是專業版的又是要付費的,是以我向同學借了專業版的安裝包,網盤放在下面,需要自取:
專業版pycharm:https://pan.baidu.com/s/1p7wX8OshaK9ndU2_FtrXxw
提取碼:0nbv
2.打開ubuntu,将預設版本設定為python3.5
1.打開終端先看一下存在的Python版本
2.再檢視現在預設的版本(我原本預設的是2.7,會出來Python 2.7.11+)
3.修改預設版本為3.5,打開bashrc檔案,添加下面一行代碼到檔案後面,仔細看一下位置。
alias python='/usr/bin/python3.6'
可以看到改完之後再次檢視版本,顯示的是Python 3.5.1+
過程按照截圖中的指令一步步來。檔案中的配置自以及代碼添加看下一張截圖。

因為我已經修改完了,是以這裡使用cat進行檢視:
(該檔案中的配置應該有我截圖中這些,如果有漏掉的話有可能會使後面結果出錯)
3.安裝pyspark
接下來安裝pyspark
更新:pycharm中不需要再次下載下傳pyspark了,連接配接到Ubuntu後直接調用的Ubuntu中的pyspark包。
在Ubuntu中,終端指令下
pip3 install pyspark
(前提是有pip3,沒有的話會有提示下載下傳)這裡就是注意pip版本問題,我在這裡出錯耽誤的時間最久:
1.我原來pip3版本是8.1.1,經過實驗這個版本下載下傳的pyspark後期代碼運作會報錯,運作不了。
2.後期請教老師了解到pip3版本過低下載下傳的pyspark有可能不能用,版本太高也不能用,是以建議pip3 10.0.0版本(一定注意更新的時候指定版本更新啊啊啊!)
3.我在更新時,由于個人手快一恍惚不小心更新到了pip21.0.0版本,這是最新的版本但是更新完直接pip任何指令都會出錯,pip直接用不了,百度各種辦法修改檔案,改來改去還是錯誤一大堆,這裡我腦子就已經亂掉了,後來幹脆進入
cd /usr/bin
裡面
sudo rm pip3
删除掉pip3,下載下傳源包手動安裝pip3 10.0.0
4.手動安裝pip3(手動安裝過程我放在了評論區,手動安裝時Python版本是3.x的。或者找指定版本更新指令将pip3更新到10.0.0後)之後,記得pip3 list一下,有東西出來再看一下版本
pip3 -V
應該是會看到10.0.0版本了。
到這裡pip3正常之後,執行
pip3 install pyspark
,這裡如果報錯看報錯問題,是逾時還是提示‘–user’,如果是後者那就
pip3 install pyspark --user
,前者就是網絡問題了。
到此虛拟機中的pyspark也下載下傳完成
4.win10中配置pycharm中的檔案,使pycharm目錄連接配接到ubuntu目錄
(是否連接配接成功的實驗:将pycharm中的随便一個py檔案在pycharm的terminal中上傳到ubuntu的目錄下)
打開Ubuntu的同時(打開pycharm前,必須先把Ubuntu打開)
打開pycharm,截圖如下,按着操作就可以了:
這裡要注意,下圖中的2是你自己的Ubuntu主機ip(ifconfig可檢視),端口号不用改,3是你的使用者名
接下來:輸入密碼點選next
下圖中的1是解釋器(interpreter)代碼運作的編譯器,因為我們預設Ubuntu中是Python3.5,是以這裡必須寫為3.5,這樣後期運作代碼時會避免一個錯誤(我就踩過這個坑)
2是虛拟機中的目錄,你可以建立一個新的目錄,然後選擇這個檔案去跟win系統的目錄進行對接。(win上傳的檔案都會到這個目錄中)
2這裡系統會自定義一串路徑,你可以點選後面的三個小點點進行改動,五角星那裡意思是實時上傳,就是你在pycharm中寫一句上傳一句到Ubuntu中。可以選擇勾選或者不勾選,影響不大,反正後面還能一次性傳輸一個檔案。
點開三個小點點就是這個樣子,1是本地目錄,2是Ubuntu中的目錄,就是這倆進行對接。
2那裡的小點點再次點選,可以選擇你新建立的目錄路徑,比如我選擇的對接目錄是/home/hadoop/test,點選4ok,再點選5ok
最後點選finish就可以了。
上面做完後,來配置這裡:
下圖中最左上角我标了個0,是因為如果你點開是空白的就點選0進行建立,一般配置完setting裡面的之後下面都會自動出現,改改個别的就行了。
這裡還有一個重要的我忘了标記,是2旁邊的Test SETPconnection,填完之後記得點一下這個,成功之後再去點選最下面的OK
如果pycharm的版本是2019的,那麼在這個界面你會發現打開有一點不一樣,不過不礙事,把該改的地方改了就行。
這裡跟上圖是一塊的,我少标個6,就是下圖是Mappings的設定,注意切換。一般來講7不用動,改一下8,(我是本地的zhuanye1目錄與Ubuntu下的/home/hadoop/test進行對接)
上面點選ok後,會直接自動連接配接到Ubuntu,成功後會出現下圖中第一行,第二行黃色的是上傳檔案(見下一個步驟)成功後的樣子,最下面黃色大叉叉那裡是實時上傳(我是這麼了解的),因為當你與Ubuntu連接配接成功之後,你在目前pycharm中建立py檔案,你寫一行,這時你會發現很慢,因為你寫在py檔案的同時,它就将你寫的上傳到了Ubuntu中。
上傳檔案是你建立一個py,随便寫幾行代碼,點選1右邊的upload to [email protected]:22(你的ip跟我不一樣,但是點選第一行就是了):
這張圖就不要看1,2了,我用的上面的截圖,當你按照上面的做到這裡的時候,下圖中灰色的那些都應該亮了,可以點選。
點選完之後就會出現上圖第二行的傳回結果說明上傳成功(如果上傳出錯,參考上面的問題建議)。
這些都做完之後,來到你的Ubuntu中,去對接目錄下看看,是不是檔案都上傳進來了(/home/hadoop/test是我的對接目錄,one two兩個py檔案是我上傳進來的,cat檢視檔案中寫的内容)
5.在pycharm中運作代碼,并成功輸出結果
這一步走出來也是艱辛的很,也有出錯的,來一步步看一下吧
上面的都弄完之後什麼都不要動,接着就在pycharm中建立py檔案,寫入如下代碼:
from pyspark import SparkConf,SparkContext
conf =SparkConf().setMaster("local").setAppName("My App")
sc=SparkContext(conf=conf)
print(sc.applicationId)
print(sc.version)
然後上傳到Ubuntu目錄中,之後再點選運作
我出了3個錯誤:
1.在點選運作之後出現下圖錯誤
這個意思是連接配接解釋器不對,這裡就是我上面說的解釋器必須是Ubuntu預設的Python3.5,這裡如果報錯,請回到第四步驟中的第五張截圖,把圖中标1的位置改成Python3.5就可以了
2.好不容易啊,連接配接也可以了,代碼沒問題了。運作之後又報錯:
這個報錯的大概意思就是環境不對
解決方法一:
在代碼前添加三行代碼如下:
import os
os.environ["JAVA_HOME"] = "/usr/lib/jvm/jdk1.8.0_162" #你的路徑
os.environ["PYSPARK_PYTHON"] = "/usr/bin/python3.5" #你的路徑
解決方法二:(不推薦,原因看文章末尾後期更新的内容)
回到代碼本身,在代碼開頭添加兩行代碼,變成如下這樣:
import findspark
findspark.init()
from pyspark import SparkConf,SparkContext
conf =SparkConf().setMaster("local").setAppName("My App")
sc=SparkContext(conf=conf)
print(sc.applicationId)
print(sc.version)
findspark也要提前下載下傳,在Ubuntu終端之下,
pip3 install findspark
如果報錯,試試
pip3 install findspark --user
下載下傳完成findspark之後再去運作代碼就可以了
3.在下載下傳完findspark之後,再次運作的時候又報錯。pycharm中突然提示連接配接不到Ubuntu,檢視解釋器和連接配接位址,對接目錄都沒問題,後來回到Ubuntu中進行ifconfig檢視ip時發現是Ubuntu的網斷了,這裡我關機重新開機了一次就好了。
連接配接上之後,再次運作就成功了:
4.總結
整個流程不難,但是意外總是很多,隻能挨個找各位大佬的經驗貼學習。
在這個實驗中,如果對接過程或者運作代碼有問題,要仔細看提示,一般都是配置問題;
比如對接時候上傳檔案出錯,那就檢視自己的連接配接是否還是正常狀态或者解釋器是否選擇正确,對接目錄是否正确;
運作代碼有問題首先看包是否都存在且正常,其次是Ubuntu中的網絡是否通暢,再就是環境問題,spark的bashrc檔案中配置不能缺少,pip版本對不對等。
這裡稍稍提一句,如果步驟5中的問題二在所有環境連接配接正常情況之下添加兩行代碼還是報錯,那麼請考慮将pyspark的版本降低到穩定版本試試,這是我在解決問題時看到的一個方案,是我最後解決不了之後的終極方案,最後成功了也就沒有用到,在這裡記錄。
5. 後期更新:
代碼運作報錯,我添加了兩行代碼之後,上面的代碼确實運作正常,但進行RDD操作時有了findspark代碼也會報錯。這是因為本質上它調用的包并不是我們最初所下載下傳的pyspark包,而是另一個路徑之下的。
(正确的路徑應該是上面錯誤2截圖中的路徑)。如果報錯中顯示的路徑正确,且報錯,多半是因為pyspark包的問題,還有就是pycharm的問題。
不知為什麼,我同學用2018版本的pycharm不會出錯,但是我的就出錯很多,一直在糾結環境以及包的問題,後面懷疑是pycharm版本問題,換了2019版本,重新對接,不添加findspark代碼也不會報錯了,而且RDD操作也正常。
是以當一直報錯,且Ubuntu環境下一切都沒問題的時候,考慮換一下pycharm版本吧。
是以最終我的環境是:
pycharm2019專業版
Ubuntu16.0
pip3=10.0.1
pyspark3.0.2