实习后面须要用到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/