Ubuntu下導入PySpark到Shell和Pycharm中(未整理)


實習后面需要用到spark,雖然之前跟了edX的spark的課程以及用spark進行machine learning,但那個環境是官方已經搭建好的,但要在自己的系統里將PySpark導入shell(或在Python里可以import pyspark)還是需要做一些操作的。(下圖,忘了先define一個sc,+。+|||)自己built的和官方pre-built的版本都可以使用 這個方法。 我們的目標是

  1. 任意目錄下在shell里啟動pyspark
  2. 在Python里import pyspark(包括ImportError: No module named py4j.java_gateway的解決辦法,參考推庫的文章,見參考)
  3. 導入pyspark到pycharm中也可以使用。因為我發現第1,2實現了后,盡管在shell中輸入Python后,以及在ipython notebook中可直接import pyspark,但Pycharm(同IDEA)中無法直接import進來!需要配置環境變量

importpyspark 今天查了下有關導入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。

配置/etc/profile和~/.bashrc文件

配置Spark,JDK,Scala的環境變量,並聲明Python的安裝位置(完成下圖就可以使用Spark了)。

 

 

 

 

 

其中有幾個要說明的(算是簡單的安裝步驟了):

  1. 下載Spark,JDK和Scala到指定目錄(我這里就是當前用戶Yuens目錄下的MySpark文件夾)並解壓縮。
  2. 通過pwd命令得到對應的JDK,Scala和Spark的根目錄。分別復制到一個地方,比方說gedit什么的。
  3. Ubuntu下shell里輸入 sudo vim /etc/profile 並回車,編輯上圖內容退出並保存。需要注意自己的版本和對應路徑名。
  4. 保存退出后,使用命令 source /etc/profile 並回車,對剛剛修改的配置環境變量的文件進行更新生效。
  5. 這時候就可以進入Spark根目錄下的bin,使用命令./pyspark或者./spark在命令行下交互式地使用spark了。

以上就是安裝spark的過程。下面是配置PySpark導入到Shelll的文件配置。還是對/etc/profile文件進行配置,此外再對~/.bashrc文件進行配置。操作流程如下:


見上圖

  1. shell下輸入 sudo vim ~/.bashrc 並回車,添加內容如上圖的下半部分(export SPARK_HOME以及export PYTHONPATH,參考/etc/profile里的SPARK_HOME和PYTHONPATH,這里截圖沒截取完整),追加完內容后保存並退出。 shell下更新保存的配置文件 source ~/.bashrc 使之生效。
  2. 測試,在任意路徑下輸入pyspark均可成功啟動PySpark。比方說在系統根目錄下cd /,輸入pyspark並回車,成功啟動pyspark(輸出日志略多,其實也可設置日志顯示級別),可以進行一些簡單的rdd操作作為測試。

ImportError: No module named py4j.java_gateway

出現這個問題,在shell鍵入 sudo vi .bashrc(其實還是編輯~/.bashrc文件),之后將之前新增進去的命令改為 export PYTHONPATH=SPARKHOME/python/:SPARK_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,點擊打開。             見下圖,分為以下幾個步驟:

 

 

 

 

  • STEP1:選擇你要配置的環境變量的文件,在左側選擇對應的py文件;
  • STEP2:點擊Environment那里的…省略號;
  • STEP3:點擊+號新增環境變量;
  • STEP4:新增兩個環境變量,對應內容,第一個Name是SPARK_HOME,其Value是你對應安裝SPARK的絕對路徑(注,不包括bin),第二個Name是PYTHONPATH,其Value是”SPARKHOME/python/lib/py4j0.8.2.1src.zip:PYTHONPATH”(把其中的SPARKHOMEPYTHONPATH分別用你的SPARK和Python的目錄替換掉,美元符號不要,沒有旁邊的雙引號,英文冒號保留即可)。

好了,現在讓我們import pyspark測試一下吧,不過寫了import pyspark之后或者類似下面這句話導入,對應的還是有紅色波浪線,其實是可以正常運行的=。=好吧(可能是PyCharm神經末梢或者反射弧比較長 0.0),無視它。運行下面這個例子(部分截圖,忘了對sc.stop(),==0)。結果用紅色圈出來了。

             

后記

后來,我再次按照自己當時寫的博客的方法來配置,沒有配置對,同時,細心的同學可能也會發現,在上面pycharm中,中”from pyspark import SparkContext, SparkConf”下方有紅色的波浪線,雖然可以用,但似乎還是存在問題。同時,我也在后來沒有配置出來。

最近這兩天在配置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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM