實習後面須要用到spark,雖然以前跟了edX的spark的課程以及用spark進行machine learning,但那個環境是官方已經搭建好的,但要在本身的系統裏將PySpark導入shell(或在Python裏能夠import pyspark)仍是須要作一些操做的。(下圖,忘了先define一個sc,+。+|||)本身built的和官方pre-built的版本均可以使用 這個方法。 咱們的目標是html
- 任意目錄下在shell裏啓動pyspark
- 在Python裏import pyspark(包括ImportError: No module named py4j.java_gateway的解決辦法,參考推庫的文章,見參考)
- 導入pyspark到pycharm中也可使用。由於我發現第1,2實現了後,儘管在shell中輸入Python後,以及在ipython notebook中可直接import pyspark,但Pycharm(同IDEA)中沒法直接import進來!須要配置環境變量
今天查了下有關導入pyspark的相關內容,stakoverflow上有人回答了這個問題(見後文reference),照着這個以及其它的回答提示 混合起來看了下,實現了將Pyspark導入到Python裏。 下面我就略去安裝Spark的過程(Spark,JDK,scala的環境配置),不過導入PySpark和安裝Spark也都是配置環境變量,我下面將 /etc/profile和~/.bashrc兩個文件下的內容放出。我這裏用的Spark的版本(spark-1.2.0-bin- hadoop2.4)是1.2官方已經build好的version。java
配置/etc/profile和~/.bashrc文件
配置Spark,JDK,Scala的環境變量,並聲明Python的安裝位置(完成下圖就可使用Spark了)。 python
其中有幾個要說明的(算是簡單的安裝步驟了):shell
- 下載Spark,JDK和Scala到指定目錄(我這裏就是當前用戶Yuens目錄下的MySpark文件夾)並解壓縮。
- 經過pwd命令獲得對應的JDK,Scala和Spark的根目錄。分別複製到一個地方,比方說gedit什麼的。
- Ubuntu下shell裏輸入 sudo vim /etc/profile 並回車,編輯上圖內容退出並保存。須要注意本身的版本和對應路徑名。
- 保存退出後,使用命令 source /etc/profile 並回車,對剛剛修改的配置環境變量的文件進行更新生效。
- 這時候就能夠進入Spark根目錄下的bin,使用命令./pyspark或者./spark在命令行下交互式地使用spark了。
以上就是安裝spark的過程。下面是配置PySpark導入到Shelll的文件配置。仍是對/etc/profile文件進行配置,此外再對~/.bashrc文件進行配置。操做流程以下:apache
見上圖vim
- shell下輸入 sudo vim ~/.bashrc 並回車,添加內容如上圖的下半部分(export SPARK_HOME以及export PYTHONPATH,參考/etc/profile裏的SPARK_HOME和PYTHONPATH,這裏截圖沒截取完整),追加完內容後保存並退出。 shell下更新保存的配置文件 source ~/.bashrc 使之生效。
- 測試,在任意路徑下輸入pyspark都可成功啓動PySpark。比方說在系統根目錄下cd /,輸入pyspark並回車,成功啓動pyspark(輸出日誌略多,其實也可設置日誌顯示級別),能夠進行一些簡單的rdd操做做爲測試。
ImportError: No module named py4j.java_gateway
出現這個問題,在shell鍵入 sudo vi .bashrc(其實仍是編輯~/.bashrc文件),以後將以前新增進去的命令改成 export PYTHONPATH=SSPARK_HOME/python /lib/py4j-0.8.2.1-src.zip:$PYTHONPATH這一句就好,其它均可以註釋掉,以後source .bashrc,再試試應該就成功了(任意目錄下在shell裏啓動pyspark以及在Python裏import pyspark)。瀏覽器
PyCharm環境變量配置
打開Pycharm按照以下進行配置,我這裏提供的方法只是針對單一文件,固然若是這個文件是一個類或者之類的要導入的文件,其它沒有引用它的文件 也要使用到pyspark的話仍是須要在對應文件中進行配置的。 固然也有一勞永逸的方法,能夠設置pyspark的的環境變量導入到默認的環境變量中去,你們感興趣的能夠自行研究(不是很麻煩)。這裏不展開討論,好吧 開始。 在PyCharm的menu裏找到Run => Edit Configurations,點擊打開。 見下圖,分爲如下幾個步驟:bash
- STEP1:選擇你要配置的環境變量的文件,在左側選擇對應的py文件;
- STEP2:點擊Environment那裏的…省略號;
- STEP3:點擊+號新增環境變量;
- STEP4:新增兩個環境變量,對應內容,第一個Name是SPARK_HOME,其Value是你對應安裝SPARK的絕對路徑(注,不包括bin),第二個Name是PYTHONPATH,其Value是」SPYTHONPATH」(把其中的SPYTHONPATH分別用你的SPARK和Python的目錄替換掉,美圓符號不要,沒有旁邊的雙引號,英文冒號保留便可)。
好了,如今讓咱們import pyspark測試一下吧,不過寫了import pyspark以後或者相似下面這句話導入,對應的仍是有紅色波浪線,實際上是能夠正常運行的=。=好吧(多是PyCharm神經末梢或者反射弧比較長 0.0),無視它。運行下面這個例子(部分截圖,忘了對sc.stop(),==0)。結果用紅色圈出來了。app
後記
後來,我再次按照本身當時寫的博客的方法來配置,沒有配置對,同時,細心的同窗可能也會發現,在上面pycharm中,中」from pyspark import SparkContext, SparkConf」下方有紅色的波浪線,雖然能夠用,但彷佛仍是存在問題。同時,我也在後來沒有配置出來。ide
最近這兩天在配置spark的環境,爲的是在ipython notebook中以及pycharm中能夠是用pyspark。昨天出了點小情況(多是更新了系統,或者是配置環境變量有問題但我後來排除了這點,或 者是和卸載了python3有關),致使①桌面沒法顯示側邊欄和上頂欄消失不見;②桌面右鍵沒法顯示更改桌面背景,也就是找不到控制面板;③系統默認字體 改了,瀏覽器字體顯示異常(直到如今也是);④輸入法沒法是用;⑤ctrl+Alt+T沒法打開終端,還好ctrl+Alt+F1能夠,同時docky面 板還在,面板上有pycharm,在pycharm裏能夠是用終端。
在百度了相關的問題後,但我這不屬於一般的問題(網上給的答案沒法解決)。無奈,找到一個恢復初始化桌面的一段代碼,對桌面進行了初始化,勉強好 了。雖然側邊欄和上頂部恢復了,但側邊欄圖標初始化爲了以前最初的時候的,瀏覽器在瀏覽網頁時候字體有問題(控制面板設定字體無果)。
可是!我初始化桌面完成後,早上試了試pycharm!居然好了。」from pyspark import SparkContext, SparkConf」這句底下沒有紅線,此外也能夠跑。如今,我把在pycharm的configuration裏的環境變量記錄,以及把.bashrc 和/etc/profile文件中相關的地方記錄。
pycharm的configuration
其實和上文中配置pycharm的同樣:
~/.bashrc
/etc/profile
Reference
- apache spark – importing pyspark in python shell – Stack Overflow http://stackoverflow.com/questions/23256536/importing-pyspark-in-python-shell#
- bashrc與profile的區別 http://www.cnblogs.com/finallyliuyu/archive/2013/05/23/3095872.html
- Linux環境變量配置的三個方法–/etc/profile,~/.bashrc,shell http://www.360doc.com/content/10/0818/15/935385_46953760.shtml
- Linux下profile和bashrc四種的區別 http://blog.itpub.net/27040306/viewspace-732343/
- Spark 入門(Python、Scala 版) – 推酷 http://www.tuicool.com/articles/zQbEZzu
- Configuration – Spark 1.4.1 Documentation(雖然沒參考這個,不過也貼出來吧) http://spark.apache.org/docs/latest/configuration.html#environment-variables
- Python Programming Guide – Spark 0.9.0 Documentation(雖然沒參考這個,不過也貼出來吧,有參考價值) http://spark.apache.org/docs/0.9.0/python-programming-guide.html
- python – KeyError: SPARK_HOME during SparkConf initialization – Stack Overflow
http://stackoverflow.com/questions/31566250/keyerror-spark-home-during-sparkconf-initialization
- 還參考了IDEA的環境變量配置方法(都是一家出的IDE),沒找到,大同小異
- Spark入門(Python版) – 博客 – 伯樂在線(這個裏面有IPYTHON notebook的環境變量配置,固然若是你沒有在/etc/profile或者~/.bashrc中配置環境變量,或者不想再那兩個文件裏配置,能夠參 考這裏的環境變量配置,以及EC2上的環境配置)
http://blog.jobbole.com/86232/