WINDOWS 10环境下的Pyspark配置 (基于Anaconda环境,附加不重启情况下环境变量Path修改方式)

WINDOWS 10环境下的Pyspark配置 (基于Anaconda环境,附加不重启情况下环境变量Path修改方式)

由于需要帮老婆完成课程作业,在ubuntu和win 10上都做了spark环境的配置,其中ubuntu环境的配置比较简单,网上教程也较多,但是win 10系统的教程中,往往忽略了很多问题,因此以下对win环境中的配置做一总结。

环境配置过程主要包括:

  • Python
  • JAVA (JDK)
  • Spark
  • Scala
  • Hadoop
  • 环境变量的设置
  • PySpark

Python

本文使用的python环境为Anaconda环境,主要考虑的是Anaconda的集成度比较好。下载地址为:Anaconda,外网下载比较慢的话推荐:清华镜像。建议安装中将Python路径添加入Path。

JDK

JAVA的配置基本可以参照Spark在Windows下的环境搭建这篇博客。JAVA下载地址为:JAVA

极为重要的一个点,一定不要安装最新的10.0.1,会导致后续的scala和spark都无法正常使用。目前我安装的版本为:Java SE Development Kit 8u171,后续安装中未出现其他问题。


安装后,记录安装目录(例如默认路径 C:\Program Files\Java\jdk1.8.0_171),后续环境变量设置部分需要用到。

Spark

Spark的安装非常简单,只需要把所用的程序下载下来解压即可。程序地址:Spark

需要注意的是,Spark的不同版本要求了不同的Scala和Hadoop版本,如上图所示,这个版本的Spark要求的Scala为大于2.10版本(推荐2.11),Hadoop版本为2.7以上。后续安装中需要注意。

Scala

从官方网址下载安装包:Scala,所选版本需和Spark对应。本人所选版本为Scala 2.11,win下的Scala需要选择Scala binaries for windows.

Hadoop

个人发现,如果不安装Hadoop,运行中会发生各种莫名其妙的错误,因此推荐配置。软件版本根据Spark来定,下载地址为:Hadoop。本人所选版本为2.7.1,选择已经编译好的版本。


下载完成解压后,需要添加winutils.exe文件,否则运行中会报错找不到该文件。网上已经有编译好的文件,地址为:github_winutils,根据自己的Hadoop版本下载,然后放入Hadoop解压后的bin文件中即可。

根据网上的大部分教程,这里提示需要对该文件进行权限修改,但是这一步在我自己使用过程中一直无法通过,并且后续的操作中发现也并无影响,因此可以考虑不进行权限修改。

环境变量的设置

在完成上述的所有安装后,我们统一进行环境变量的配置。注意,以下修改的都是“系统变量”,非用户变量。

Python

Anaconda安装中已经自动配置。

JAVA

在系统变量中加入JAVA_HOME,路径设置为:

 C:\Program Files\Java\jdk1.8.0_171

在系统变量中加入CLASSPATH (重要),路径设置为:

%JAVA_HOME%\lib

不添加这一步,后续使用中会提示需要的库函数未找到。

在Path中添加:

%JAVA_HOME%\bin

Scala

安装中已经自动配置,如果没有,将Scala的bin文件添加入Path中。

Hadoop

在系统变量中加入HADOOP_HOME,路径设置为解压后的Hadoop路径。

在Path中添加:

%HADOOP_HOME%\bin

Spark

在系统变量中加入SPARK_HOME,路径设置为解压后的Spark路径。

在Path中添加:

%SPARK_HOME%\bin
%SPARK_HOME%\sbin

所有环境配置完以后,可以通过重启来使得系统环境变量激活。这里介绍一种更为简单的操作,首先在Powershell中运行

set PATH=C:

关闭该窗口,在新窗口中运行

echo %PATH% 

系统变量即生效。该操作不改变系统环境变量,省去了关机的时间。(原理请参照其他博客。)

在完成所有环境变量配置后,可以在Powershell中运行spark-shell,显示如下界面:

运行pyspark,显示如下界面:

即表明基本配置成功。

PySpark

由于希望在python环境中可以直接通过import pyspark的形式使用,因此,我们通过如下的方式来让python“找到”spark。

首先,通过pip命令安装findspark:

pip install findspark

然后在所需程序中执行

import findspark
findspark.init()

即可顺利import pyspark。

最后,祝大家期末愉快!

编辑于 2018-06-02