实现win10系统下pycharm与ubuntu的对接

实现win10系统下pycharm与ubuntu的对接

  • 1.前提说明
  • 2.然后标一下我分别在哪一步遇到问题的:
  • 3.以下开始详细说明每个步骤的流程
    • 1.在win10中下载专业版的pycharm
    • 2.打开ubuntu,将默认版本设置为python3.5
    • 3.安装pyspark
    • 4.win10中配置pycharm中的文件,使pycharm目录连接到ubuntu目录
    • 5.在pycharm中运行代码,并成功输出结果
  • 4.总结
  • 5. 后期更新:

1.前提说明

在学习spark过程中,使用到win系统上的pycharm与ubuntu进行对接,这里记录自己所做的实现对接的流程,其实流程很简单,但是我在这个过程中出错很多,搞得心态都要崩了,觉得有必要记录一下,给出同样错的做个参考。

环境:
pycharm专业版
win10
ubuntu16.0
pip3 版本10.0.0
pyspark3.0.2
python默认3.5

需要下载的包放在后面的流程中
先说一下大概流程和问题,最后放详细的过程

  1. 在win10中下载专业版的pycharm

  2. 打开ubuntu,将默认版本设置为python3.5

  3. 安装pyspark

  4. win10中配置pycharm中的文件,使pycharm目录连接到ubuntu目录,连接时请提前将ubuntu中的hadoop节点开启:sbin/start-dfs.sh
    (是否连接成功的实验:将pycharm中的随便一个py文件在pycharm的terminal中上传到ubuntu的目录下)

  5. 在pycharm中运行代码,并成功输出结果

2.然后标一下我分别在哪一步遇到问题的:

第3步骤,遇到的问题:pyspark下载出错,pip问题

建议: 这是一个需要注意的点,在下载之前得先看一下有没有pip和pip的版本,因为python默认版本是3.x的,所以不要用pip下载,而是使用pip3。其次pip3(pip)版本最好是10.0.0,不要太高太低,否则后面运行代码早晚的报错。

当需要升级pip的时候,就直接指定10.0.0的去升级,如果直接升级到21.0版本的话会报错,导致pip直接用不了,那个报错我现在也没解决,所以后面又费劲儿吧啦的删除pip3,下载了pip10.0.0的包进行手动安装。一般来说只要pip3 ok了,下载pyspark也就没什么问题了。

当pip3也正常之后发现pyspark依然报错,那你看一下报错的最后一行有没有提示‘–user’这个单词,如果有的话,就在下载命令之后加上–user,比如:pip3 install pyspark --user

这个适用于任何报错后出现–user的,都可以命令后加上这个单词再次运行

第4步骤,遇到的问题:连接成功但上传文件报错

建议: 整个连接过程在做之前最好先理好头绪之后一步到位,不要自己都搞不清楚对接目录,弄得一团乱麻,个人觉得后期改起来也费劲儿,这里就是明确两点:

一:你想用pycharm的哪个目录对接ubuntu的哪个目录,俩目录搞清楚。
二:在setting设置时,有一个过程一定记得写为python3.5(这里说就是提醒需要注意,后面会有详细说明)

第5步骤,遇到的问题:代码运行报错

建议: 在这里好不容易都弄完了,但是代码又出错了,这里我找到了一个解决办法放在后面的步骤中,如果没有出错可以直接运行的就可以忽略不看,如果有相同报错的可以看一下希望能有些帮助。

这里还有一个Ubuntu突然断网导致连接中断运行出错的,后面也会详细说一下。

3.以下开始详细说明每个步骤的流程

1.在win10中下载专业版的pycharm

在做实验时,听老师说对接用专业版的可以,社区版本的不太行,但是专业版的又是要付费的,所以我向同学借了专业版的安装包,网盘放在下面,需要自取:
专业版pycharm:https://pan.baidu.com/s/1p7wX8OshaK9ndU2_FtrXxw
提取码:0nbv

2.打开ubuntu,将默认版本设置为python3.5

1.打开终端先看一下存在的Python版本
2.再查看现在默认的版本(我原本默认的是2.7,会出来Python 2.7.11+)
3.修改默认版本为3.5,打开bashrc文件,添加下面一行代码到文件后面,仔细看一下位置。

alias python='/usr/bin/python3.6'

可以看到改完之后再次查看版本,显示的是Python 3.5.1+
过程按照截图中的命令一步步来。文件中的配置自以及代码添加看下一张截图。
实现win10系统下pycharm与ubuntu的对接_第1张图片
因为我已经修改完了,所以这里使用cat进行查看:
(该文件中的配置应该有我截图中这些,如果有漏掉的话有可能会使后面结果出错)
实现win10系统下pycharm与ubuntu的对接_第2张图片

3.安装pyspark

接下来安装pyspark

更新:pycharm中不需要再次下载pyspark了,连接到Ubuntu后直接调用的Ubuntu中的pyspark包。

在Ubuntu中,终端命令下pip3 install pyspark(前提是有pip3,没有的话会有提示下载)这里就是注意pip版本问题,我在这里出错耽误的时间最久:

1.我原来pip3版本是8.1.1,经过实验这个版本下载的pyspark后期代码运行会报错,运行不了。

2.后期请教老师了解到pip3版本过低下载的pyspark有可能不能用,版本太高也不能用,所以建议pip3 10.0.0版本(一定注意升级的时候指定版本升级啊啊啊!)

3.我在更新时,由于个人手快一恍惚不小心更新到了pip21.0.0版本,这是最新的版本但是更新完直接pip任何命令都会出错,pip直接用不了,百度各种办法修改文件,改来改去还是错误一大堆,这里我脑子就已经乱掉了,后来干脆进入cd /usr/bin里面sudo rm pip3删除掉pip3,下载源包手动安装pip3 10.0.0

4.手动安装pip3(手动安装过程我放在了评论区,手动安装时Python版本是3.x的。或者找指定版本升级命令将pip3升级到10.0.0后)之后,记得pip3 list一下,有东西出来再看一下版本pip3 -V应该是会看到10.0.0版本了。

到这里pip3正常之后,执行pip3 install pyspark,这里如果报错看报错问题,是超时还是提示‘–user’,如果是后者那就pip3 install pyspark --user,前者就是网络问题了。

到此虚拟机中的pyspark也下载完成

4.win10中配置pycharm中的文件,使pycharm目录连接到ubuntu目录

(是否连接成功的实验:将pycharm中的随便一个py文件在pycharm的terminal中上传到ubuntu的目录下)

打开Ubuntu的同时(打开pycharm前,必须先把Ubuntu打开)

打开pycharm,截图如下,按着操作就可以了:
实现win10系统下pycharm与ubuntu的对接_第3张图片
实现win10系统下pycharm与ubuntu的对接_第4张图片
这里要注意,下图中的2是你自己的Ubuntu主机ip(ifconfig可查看),端口号不用改,3是你的用户名
实现win10系统下pycharm与ubuntu的对接_第5张图片
接下来:输入密码点击next
实现win10系统下pycharm与ubuntu的对接_第6张图片
下图中的1是解释器(interpreter)代码运行的编译器,因为我们默认Ubuntu中是Python3.5,所以这里必须写为3.5,这样后期运行代码时会避免一个错误(我就踩过这个坑)

2是虚拟机中的目录,你可以创建一个新的目录,然后选择这个文件去跟win系统的目录进行对接。(win上传的文件都会到这个目录中)

2这里系统会自定义一串路径,你可以点击后面的三个小点点进行改动,五角星那里意思是实时上传,就是你在pycharm中写一句上传一句到Ubuntu中。可以选择勾选或者不勾选,影响不大,反正后面还能一次性传输一个文件。
实现win10系统下pycharm与ubuntu的对接_第7张图片
点开三个小点点就是这个样子,1是本地目录,2是Ubuntu中的目录,就是这俩进行对接。

2那里的小点点再次点击,可以选择你新创建的目录路径,比如我选择的对接目录是/home/hadoop/test,点击4ok,再点击5ok
最后点击finish就可以了。
实现win10系统下pycharm与ubuntu的对接_第8张图片

上面做完后,来配置这里:
实现win10系统下pycharm与ubuntu的对接_第9张图片
下图中最左上角我标了个0,是因为如果你点开是空白的就点击0进行创建,一般配置完setting里面的之后下面都会自动出现,改改个别的就行了。

这里还有一个重要的我忘了标记,是2旁边的Test SETPconnection,填完之后记得点一下这个,成功之后再去点击最下面的OK

如果pycharm的版本是2019的,那么在这个界面你会发现打开有一点不一样,不过不碍事,把该改的地方改了就行。
实现win10系统下pycharm与ubuntu的对接_第10张图片
这里跟上图是一块的,我少标个6,就是下图是Mappings的设置,注意切换。一般来讲7不用动,改一下8,(我是本地的zhuanye1目录与Ubuntu下的/home/hadoop/test进行对接)
实现win10系统下pycharm与ubuntu的对接_第11张图片
上面点击ok后,会直接自动连接到Ubuntu,成功后会出现下图中第一行,第二行黄色的是上传文件(见下一个步骤)成功后的样子,最下面黄色大叉叉那里是实时上传(我是这么理解的),因为当你与Ubuntu连接成功之后,你在当前pycharm中创建py文件,你写一行,这时你会发现很慢,因为你写在py文件的同时,它就将你写的上传到了Ubuntu中。
实现win10系统下pycharm与ubuntu的对接_第12张图片
上传文件是你创建一个py,随便写几行代码,点击1右边的upload to [email protected]:22(你的ip跟我不一样,但是点击第一行就是了):

这张图就不要看1,2了,我用的上面的截图,当你按照上面的做到这里的时候,下图中灰色的那些都应该亮了,可以点击。
点击完之后就会出现上图第二行的返回结果说明上传成功(如果上传出错,参考上面的问题建议)。
实现win10系统下pycharm与ubuntu的对接_第13张图片
这些都做完之后,来到你的Ubuntu中,去对接目录下看看,是不是文件都上传进来了(/home/hadoop/test是我的对接目录,one two两个py文件是我上传进来的,cat查看文件中写的内容)
实现win10系统下pycharm与ubuntu的对接_第14张图片

5.在pycharm中运行代码,并成功输出结果

这一步走出来也是艰辛的很,也有出错的,来一步步看一下吧

上面的都弄完之后什么都不要动,接着就在pycharm中创建py文件,写入如下代码:

from pyspark import SparkConf,SparkContext
conf =SparkConf().setMaster("local").setAppName("My App")
sc=SparkContext(conf=conf)
print(sc.applicationId)
print(sc.version)

然后上传到Ubuntu目录中,之后再点击运行

我出了3个错误:
1.在点击运行之后出现下图错误
在这里插入图片描述
这个意思是连接解释器不对,这里就是我上面说的解释器必须是Ubuntu默认的Python3.5,这里如果报错,请回到第四步骤中的第五张截图,把图中标1的位置改成Python3.5就可以了

2.好不容易啊,连接也可以了,代码没问题了。运行之后又报错:

实现win10系统下pycharm与ubuntu的对接_第15张图片
这个报错的大概意思就是环境不对

解决方法一
在代码前添加三行代码如下:

import os
os.environ["JAVA_HOME"] = "/usr/lib/jvm/jdk1.8.0_162" #你的路径
os.environ["PYSPARK_PYTHON"] = "/usr/bin/python3.5"   #你的路径

解决方法二:(不推荐,原因看文章末尾后期更新的内容)
回到代码本身,在代码开头添加两行代码,变成如下这样:

import findspark
findspark.init()
from pyspark import SparkConf,SparkContext
conf =SparkConf().setMaster("local").setAppName("My App")
sc=SparkContext(conf=conf)
print(sc.applicationId)
print(sc.version)

findspark也要提前下载,在Ubuntu终端之下,pip3 install findspark
如果报错,试试pip3 install findspark --user

下载完成findspark之后再去运行代码就可以了

3.在下载完findspark之后,再次运行的时候又报错。pycharm中突然提示连接不到Ubuntu,查看解释器和连接地址,对接目录都没问题,后来回到Ubuntu中进行ifconfig查看ip时发现是Ubuntu的网断了,这里我关机重启了一次就好了
连接上之后,再次运行就成功了:
实现win10系统下pycharm与ubuntu的对接_第16张图片

4.总结

整个流程不难,但是意外总是很多,只能挨个找各位大佬的经验贴学习。
在这个实验中,如果对接过程或者运行代码有问题,要仔细看提示,一般都是配置问题;
比如对接时候上传文件出错,那就查看自己的连接是否还是正常状态或者解释器是否选择正确,对接目录是否正确;

运行代码有问题首先看包是否都存在且正常,其次是Ubuntu中的网络是否通畅,再就是环境问题,spark的bashrc文件中配置不能缺少,pip版本对不对等。

这里稍稍提一句,如果步骤5中的问题二在所有环境连接正常情况之下添加两行代码还是报错,那么请考虑将pyspark的版本降低到稳定版本试试,这是我在解决问题时看到的一个方案,是我最后解决不了之后的终极方案,最后成功了也就没有用到,在这里记录。

5. 后期更新:

代码运行报错,我添加了两行代码之后,上面的代码确实运行正常,但进行RDD操作时有了findspark代码也会报错。这是因为本质上它调用的包并不是我们最初所下载的pyspark包,而是另一个路径之下的。

(正确的路径应该是上面错误2截图中的路径)。如果报错中显示的路径正确,且报错,多半是因为pyspark包的问题,还有就是pycharm的问题。
不知为什么,我同学用2018版本的pycharm不会出错,但是我的就出错很多,一直在纠结环境以及包的问题,后面怀疑是pycharm版本问题,换了2019版本,重新对接,不添加findspark代码也不会报错了,而且RDD操作也正常。
所以当一直报错,且Ubuntu环境下一切都没问题的时候,考虑换一下pycharm版本吧。

所以最终我的环境是:
pycharm2019专业版
Ubuntu16.0
pip3=10.0.1
pyspark3.0.2

你可能感兴趣的:(spark,ubuntu,python,spark)