实习后面需要用到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进来!需要配置环境变量

今天查了下有关导入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/py4j−0.8.2.1−src.zip:PYTHONPATH”(把其中的SPARKHOME和PYTHONPATH分别用你的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的一样:

Name为PYTHONPATH,其Value为/home/yuens/MySpark/spark-1.5.1-bin-hadoop2.6/python/lib/py4j-0.8.2.1-src.zip:/usr/bin/python
Name为SPARK_HOME,其Value为/home/yuens/MySpark/spark-1.5.1-bin-hadoop2.6
1
2
Name为PYTHONPATH,其Value为/home/yuens/MySpark/spark-1.5.1-bin-hadoop2.6/python/lib/py4j-0.8.2.1-src.zip:/usr/bin/python
Name为SPARK_HOME,其Value为/home/yuens/MySpark/spark-1.5.1-bin-hadoop2.6

~/.bashrc

# Anaconda:added by user
export PATH="/usr/local/anaconda/bin:$PATH"
export PATH="/usr/local/anaconda/bin/ipython2:$PATH"

# MATLAB:added by user
export PATH="/usr/local/MATLAB/MATLAB_Production_Server/R2015a/bin:$PATH"

# IntelliJ IDEA:added by user
export PATH="/usr/local/idea-IU-141.2735.5/bin:$PATH"

# JDK enviroment configs
JAVA_HOME=/home/yuens/MySpark/jdk1.8.0_60
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.${JAVA_HOME}/lib:${JRE_HOME}/lib
PATH=$PATH:${JAVA_HOME}/bin

# Scala enviroment configs
PATH=$PATH:/home/yuens/MySpark/scala-2.11.7/bin

# Spark enviroment configs
SPARK_HOME=/home/yuens/MySpark/spark-1.5.1-bin-hadoop2.6
PATH=$PATH:${SPARK_HOME}/bin

# Python configs
#PYTHONPATH=/usr/local/anaconda/bin/python
PYTHONPATH=/usr/bin/python
PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/bulid:$PYTHONPATH

export PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Anaconda:added by user
export PATH="/usr/local/anaconda/bin:$PATH"
export PATH="/usr/local/anaconda/bin/ipython2:$PATH"
 
# MATLAB:added by user
export PATH="/usr/local/MATLAB/MATLAB_Production_Server/R2015a/bin:$PATH"
 
# IntelliJ IDEA:added by user
export PATH="/usr/local/idea-IU-141.2735.5/bin:$PATH"
 
 
# JDK enviroment configs
JAVA_HOME=/home/yuens/MySpark/jdk1.8.0_60
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.${JAVA_HOME}/lib:${JRE_HOME}/lib
PATH=$PATH:${JAVA_HOME}/bin
 
 
# Scala enviroment configs
PATH=$PATH:/home/yuens/MySpark/scala-2.11.7/bin
 
# Spark enviroment configs
SPARK_HOME=/home/yuens/MySpark/spark-1.5.1-bin-hadoop2.6
PATH=$PATH:${SPARK_HOME}/bin
 
# Python configs
#PYTHONPATH=/usr/local/anaconda/bin/python
PYTHONPATH=/usr/bin/python
PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/bulid:$PYTHONPATH
 
 
export PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH

/etc/profile

# Anaconda:added by user
export PATH="/usr/local/anaconda/bin:$PATH"
export PATH="/usr/local/anaconda/bin/ipython2:$PATH"

# MATLAB:added by user
export PATH="/usr/local/MATLAB/MATLAB_Production_Server/R2015a/bin:$PATH"

# IntelliJ IDEA:added by user
export PATH="/usr/local/idea-IU-141.2735.5/bin:$PATH"

# JDK enviroment configs
JAVA_HOME=/home/yuens/MySpark/jdk1.8.0_60
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.${JAVA_HOME}/lib:${JRE_HOME}/lib
PATH=$PATH:${JAVA_HOME}/bin

# Scala enviroment configs
PATH=$PATH:/home/yuens/MySpark/scala-2.11.7/bin

# Spark enviroment configs
SPARK_HOME=/home/yuens/MySpark/spark-1.5.1-bin-hadoop2.6
PATH=$PATH:${SPARK_HOME}/bin

# Python configs
PYTHONPATH=/usr/local/anaconda/bin/python
#PYTHONPATH=/usr/bin/python
PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/bulid:$PYTHONPATH

export PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Anaconda:added by user
export PATH="/usr/local/anaconda/bin:$PATH"
export PATH="/usr/local/anaconda/bin/ipython2:$PATH"
 
# MATLAB:added by user
export PATH="/usr/local/MATLAB/MATLAB_Production_Server/R2015a/bin:$PATH"
 
# IntelliJ IDEA:added by user
export PATH="/usr/local/idea-IU-141.2735.5/bin:$PATH"
 
 
# JDK enviroment configs
JAVA_HOME=/home/yuens/MySpark/jdk1.8.0_60
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.${JAVA_HOME}/lib:${JRE_HOME}/lib
PATH=$PATH:${JAVA_HOME}/bin
 
# Scala enviroment configs
PATH=$PATH:/home/yuens/MySpark/scala-2.11.7/bin
 
# Spark enviroment configs
SPARK_HOME=/home/yuens/MySpark/spark-1.5.1-bin-hadoop2.6
PATH=$PATH:${SPARK_HOME}/bin
 
# Python configs
PYTHONPATH=/usr/local/anaconda/bin/python
#PYTHONPATH=/usr/bin/python
PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/bulid:$PYTHONPATH
 
export PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH

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/

Ubuntu下导入PySpark到Shell和Pycharm中(未整理)的更多相关文章

  1. Ubuntu下安装、激活并配置Pycharm

    Ubuntu下安装.激活并配置Pycharm 最近在学习Python这门语言,到了需要Python编译器学习的阶段,通过网上了解各个Python编译器的优缺点,最后选择了pycharm作为Python ...

  2. Ubuntu下创建桌面快捷方式(以Pycharm为例)

    之后要在Ubuntu虚拟机上玩PyTorch,安装了Pycharm. 然而每次打开Pycharm需要在其bin目录下进入终端,然后输入sh pycharm.sh,很麻烦.既然Ubuntu是桌面系统,为 ...

  3. macos 下安装virtualenv,virtualenvwrapper,然后在pycharm中正常配置方法日志

    1.安装virtualenv或virtualenvwrapper pip install virtualenv pip install virtualenvwraper 注意pip的版本号(查看 pi ...

  4. ubuntu下导入kali源

    Kali-Linux之前的渗透神器BackTrack是基于Ubuntu的,界面比较友好,字体渲染看起来也比较舒服(也可能是本人用惯了 Ubuntu的缘故).后来官方终止BackTrack,开发Kali ...

  5. ubuntu下python跑任务输出到文件中遇到的一些问题(输出重定向)

    之前主要是参考https://www.cnblogs.com/chason95/articles/9760291.html 一般使用 python test.py > ./log.txt 或 p ...

  6. 深度学习框架之TensorFlow的概念及安装(ubuntu下基于pip的安装,IDE为Pycharm)

    2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源. 1.TensorFlow的概念 TensorFlow 是使用数据流图进行数值计算的开源软件库.也就是说,Tensor ...

  7. ubuntu下安装svn

    Ubuntu下使用SVN SVN作为日常开发中不可缺少的工具,今天终于开始在Ubuntu下使用了. 1.首先需要安装SVN.Ubuntu下的SVN安装十分简单,sudo apt-get install ...

  8. ubuntu下新立得(synaptic)软件包管理器安装

    1.从ubuntu下的软件中心(面板主页中输入soft即可找到)搜索安装synaptic后,打开新立得一闪就自动关了.解决办法为: 1.1命令行下卸载,命令行下重新安装: 卸载: #purge表示卸载 ...

  9. Ubuntu下安装Pycharm出现unsupported major.minor version 52.0

    (一)原因 Ubuntu下pycharm安装:https://jingyan.baidu.com/article/60ccbceb4e3b0e64cab19733.html pycharm激活:htt ...

随机推荐

  1. [转]git commit之后,想撤销commit

    本文转自:http://www.cnblogs.com/lfxiao/p/9378763.html 写完代码后,我们一般这样 git add . //添加所有文件 git commit -m &quo ...

  2. [转]Laravel 数据库实例教程 —— 使用查询构建器实现对数据库的高级查询

    本文转自:https://laravelacademy.org/post/920.html 上一节我们简单介绍了如何使用查询构建器对数据库进行基本的增删改查操作,这一节我们来探讨如何使用查询构建器实现 ...

  3. 从零开始学安全(十六)● Linux vim命令

    游标控制 h 游标向左移 j 游标向下移 k 游标向上移 l (or spacebar) 游标向右移 w 向前移动一个单词 b 向后移动一个单词 e 向前移动一个单词,且游标指向单词的末尾 ( 移到当 ...

  4. SpringBoot简介

    Spring Boot,简单讲就是牺牲项目的自由度来减少配置的复杂度(“契约式编程”思想,SpringBoot自动配置方案的指导思想).约定一套规则,把这些框架都自动配置集成好,从而达到“开箱即用”. ...

  5. Tri Tiling(hdu1143)

    Tri Tiling Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  6. sublime text2 中标签高亮效果BracketHighlighter插件

    1.打开package Control,选择install Package 2.输入BracketHighlighter,回车 3.这样该插件会自动安装,安装后所有的提示高亮都是白色或没有提示.按 p ...

  7. 中国 AI 天才养成计划:清华姚班和 100 个「张小龙」

    https://daily.zhihu.com/story/9653612?from=timeline&isappinstalled=0   AI财经社,专注未来,以及更好的生活 真正的 AI ...

  8. JVM调优日志解析分析

    一.调优参数设置 JVM的GC日志的主要参数包括如下几个: -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStam ...

  9. Vue之resource请求数据

    导入resource文件 <script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js& ...

  10. unity修改脚本的图标

    我们看别人代码时有时看到人家的脚本显示的不是unity的默认图标,而是自己的logo.如: 这样看上去感觉很专业有没有. 修改方法: 1 在Project窗口中点击选中脚本,在Inspector界面点 ...