现在是2021年6月,我在网上能搜到的教程或博客都是离现在有一段时间了的,老教程最让人头疼的就是版本选择问题,我前前后后大概花了10个小时才把pyspark装好,中间还去翻了翻命令行的原理,甚至一度想转linux了。总之是想在这里给出我的版本选择,希望能帮到 最近 要装pyspark的朋友
PYSPARK on WINDOWS = Python3.8(Anaconda) + JDK1.8.0_291 + Hadoop2.7.1 + Spark3.1.2-bin-hadoop3.2 + Scala-2.13.1
请务必重视版本的选择,在遇到问题后网上很多教程都说降版本,我自己经历了把所有软件依次换成低版本又逐个换回高版本最终解决了问题的经历
一、Anaconda & Python(默认大家都装了,Python选择3.8)
二、JDK
Java SE Development Kit 8 — 下载 | Oracle 中国
安装过程略。推荐安装路径:D:\Java\jdk1.8.0_291
装在Program File下面可能会导致其环境变量被其它配置文件使用时产生歧义,虽然不是什么大问题,也有进一步的解决方案。但正是反复与小问题周旋才会耗尽人的意志力
设置一下环境变量:
-
win10直接在左下角搜索“环境”,第一个搜索结果就是环境变量
-
在系统变量栏中新建或选中已有变量进行编辑:
变量名 变量值 JAVA_HOME D:\Java\jdk1.8.0_291 CLASSPATH D:\Java\jdk1.8.0_291\lib PATH D:\Java\jdk1.8.0_291\bin 变量名下的多个取值用 ; 隔开;在设置了JAVA_HOME后,后面的变量值可以部分被%JAVA_HOME%替代,比如CLASSPATH的变量值可以改为%JAVA_HOME%\lib。要注意的是,编辑PATH时,界面以列表形式展示,若PATH的第一个变量是以 % 开头,则会导致编辑PATHs时以分号隔开的一整行的形式来展示。
三、Hadoop
直接点官网的Download,只能看到3个比较新的版本,为了下老版本,要在Community栏目下的左侧的Latest News下翻找对应版本。下载2.7.1是为了适配后面的hadooponwindows。
安装后配置环境变量:
变量名 | 变量值 |
---|---|
HADOOP_HOME | D:\hadoop\hadoop-2.7.1 |
PATH | D:\hadoop\hadoop-2.7.1\bin; D:\hadoop\hadoop-2.7.1\sbin |
添加sbin路径是方便配置好后在任意路径都可以调用sbin\start-all.cmd以启用Hadoop
接下来进入 hadooponwindows 。
用该项目的bin文件替换掉我们电脑上Hadoop安装路径下的bin,并将bin\hadoop.dll复制到C:\Windows\System32中。
这样就安装好了,在cmd中执行以下语句以验证功能:
# 格式名称节点
hadoop namenode -format
# 启动hadoop
start-all.sh
启动后将会打开4个新的cmd终端,分别是namenode,datanode,nodemanager和resourcemanager,这样说明安装成功。(然后关闭即可)
关闭前也可以在浏览器中用localhost:8088来打开Hadoop的资源管理器。
四、Spark
再次提醒版本问题,选择Hadoop2.7的话,无论搭python3.8还是python3.6都会出问题的
下载、解压、将安装路径设置环境变量,同样是设置SPARK_HOME和PATH,PATH只需添加%SPARK_HOME%\bin路径。
五、Scala
Scala 2.13.1 | The Scala Programming Language (scala-lang.org)
流程同Spark,略
六、Anaconda
要让Pyspark环境在Anaconda的jupyter notebook上运行,需要额外设置三个环境变量:
(最后一个我也还没太明白,怀着宁可信其有的态度加上去了)
如果用jupyter lab开发,将第二个变量值换为lab即可。
最后——在cmd中跳转到目标路径,输入pyspark,即可打开对应的工作环境了。
试试调用以下语句,尤其是像take()这样的rdd的动作,可以检查是否正确安装:
七、写在最后
越写越觉得挺没有技术含量的,好多简单的步骤都想跳过,不想像保姆一样每个操作画面都截图,很多操作是类似的。但是因为安装上的问题浪费时间则是件更没有意义的事情,为了(也许能)让其他人少跳坑所以还是发出来了。
无论你按照上述步骤安装是否成功,我都会推荐尝试这两件事:一是阅读所有软件的document,技术文档会指导软件包的使用和配置方式,好的技术文档则会表达出软件设计的价值;二是学习 Windows Command-Line 和阅读各个软件的bin\下的配置脚本,这些能帮助理解设置环境变量到底是在干什么,同时也能逐渐掌握写windows下的.bat脚本的能力。
对了,阅读cmd脚本的话,很推荐Sublime Text。以前觉得丑丑的软件,读起脚本来真香了。
学Windows Command-Line的时候又了解到了windows terminal,还有Windows支持的子系统WSL(可以直接装Ubuntu而不用开resource-hungry的虚拟机),等等。这些都是后话了,一篇里写不完而且已经偏题了,总之谢谢观看~
ows Command-Line的时候又了解到了windows terminal,还有Windows支持的子系统WSL(可以直接装Ubuntu而不用开resource-hungry的虚拟机),等等。这些都是后话了,一篇里写不完而且已经偏题了,总之谢谢观看~