Ubuntu下导入PySpark到Shell和Pycharm中(未整理)
实习后面需要用到spark,虽然之前跟了edX的spark的课程以及用spark进行machine learning,但那个环境是官方已经搭建好的,但要在自己的系统里将PySpark导入shell(或在Python里可以import pyspark)还是需要做一些操作的。(下图,忘了先define一个sc,+。+|||)自己built的和官方pre-built的版本都可以使用 这个方法。 我们的目标是
- 任意目录下在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。
配置/etc/profile和~/.bashrc文件
配置Spark,JDK,Scala的环境变量,并声明Python的安装位置(完成下图就可以使用Spark了)。
其中有几个要说明的(算是简单的安装步骤了):
- 下载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文件进行配置。操作流程如下:
见上图
- 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,点击打开。 见下图,分为以下几个步骤:
- 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)。结果用红色圈出来了。
后记
后来,我再次按照自己当时写的博客的方法来配置,没有配置对,同时,细心的同学可能也会发现,在上面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/