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=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为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
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
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中(未整理)的更多相关文章
- Ubuntu下安装、激活并配置Pycharm
Ubuntu下安装.激活并配置Pycharm 最近在学习Python这门语言,到了需要Python编译器学习的阶段,通过网上了解各个Python编译器的优缺点,最后选择了pycharm作为Python ...
- Ubuntu下创建桌面快捷方式(以Pycharm为例)
之后要在Ubuntu虚拟机上玩PyTorch,安装了Pycharm. 然而每次打开Pycharm需要在其bin目录下进入终端,然后输入sh pycharm.sh,很麻烦.既然Ubuntu是桌面系统,为 ...
- macos 下安装virtualenv,virtualenvwrapper,然后在pycharm中正常配置方法日志
1.安装virtualenv或virtualenvwrapper pip install virtualenv pip install virtualenvwraper 注意pip的版本号(查看 pi ...
- ubuntu下导入kali源
Kali-Linux之前的渗透神器BackTrack是基于Ubuntu的,界面比较友好,字体渲染看起来也比较舒服(也可能是本人用惯了 Ubuntu的缘故).后来官方终止BackTrack,开发Kali ...
- ubuntu下python跑任务输出到文件中遇到的一些问题(输出重定向)
之前主要是参考https://www.cnblogs.com/chason95/articles/9760291.html 一般使用 python test.py > ./log.txt 或 p ...
- 深度学习框架之TensorFlow的概念及安装(ubuntu下基于pip的安装,IDE为Pycharm)
2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源. 1.TensorFlow的概念 TensorFlow 是使用数据流图进行数值计算的开源软件库.也就是说,Tensor ...
- ubuntu下安装svn
Ubuntu下使用SVN SVN作为日常开发中不可缺少的工具,今天终于开始在Ubuntu下使用了. 1.首先需要安装SVN.Ubuntu下的SVN安装十分简单,sudo apt-get install ...
- ubuntu下新立得(synaptic)软件包管理器安装
1.从ubuntu下的软件中心(面板主页中输入soft即可找到)搜索安装synaptic后,打开新立得一闪就自动关了.解决办法为: 1.1命令行下卸载,命令行下重新安装: 卸载: #purge表示卸载 ...
- Ubuntu下安装Pycharm出现unsupported major.minor version 52.0
(一)原因 Ubuntu下pycharm安装:https://jingyan.baidu.com/article/60ccbceb4e3b0e64cab19733.html pycharm激活:htt ...
随机推荐
- Python GUI
1.flexx Flexx 是一个纯Python工具包,用来创建图形化界面应用程序.其使用 Web 技术进行界面的渲染.你可以用Flexx来创建桌面应用,同时也可以导出一个应用到独立的 HTML 文档 ...
- Linux服务器评测脚本 中文IO脚本简单易懂
中文版: wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/ZBench/master/ZBe ...
- ubuntu 16.04服务器 搭建php LAMP环境
1.安装Apache 下载目录: sudo apt update 安装程序: sudo apt install apache2 检查是否安装成功: sudo systemctl status apac ...
- git error: RPC failed; result=56, HTTP code = 200
突然发现git pull 后出现几次都无果,百度后, 发现是curl的postBuffer 默认值较小的原因,配置下这个值,就不会出现该错误了.解决如下: git config --global ht ...
- SpringBoot 之集成邮件服务.
一.前言 Spring Email 抽象的核心是 MailSender 接口,MailSender 的实现能够把 Email 发送给邮件服务器,由邮件服务器实现邮件发送的功能. Spring 自带了一 ...
- 微服务创建——Ubuntu搭建GitLab
Ubuntu呢,用的国产麒麟,可能对于用习惯了Windows操作系统的人来说使用UKylin会很难受吧,开发的人倒没什么,不过就是命令行的问题 那么,怎么搭建一个完整的GitLab呢,一步步来操作吧, ...
- 8;XHTML 框架
1.多窗框的基本结构 2.嵌套多窗体设置 3.多框架与超链接 4.悬浮窗体的设置 浏览器视窗本身就是一个框架,网页就是显示在该单 一的框架内,本章将介绍另一种网页呈现的方式,那就是可将原先单一的框架分 ...
- kubernetes认证和serviceaccount
Service Account 为 Pod 提供必要的身份认证.所有的 kubernetes 集群中账户分为两类,Kubernetes 管理的 serviceaccount(服务账户) 和 usera ...
- MySQL5.7: datetime
-- 当前日期时间 select now(); select now(3);-- 保留3位毫秒数 SELECT NOW(6); -- 保留6位毫秒数 -- 当前日期和时间 至秒 select curr ...
- loj#6032. 「雅礼集训 2017 Day2」水箱(并查集 贪心 扫描线)
题意 链接 Sol 神仙题+神仙做法%%%%%%%% 我再来复述一遍.. 首先按照\(y\)坐标排序,然后维护一个扫描线从低处往高处考虑. 一个连通块的内状态使用两个变量即可维护\(ans\)表示联通 ...