准备工作
- 查看操作系统的版本信息:计算机>>右键“属性”>>查看版本信息,如Windows10专业版64位。
1
安装Anaconda
1.1 下载
- 注意选择与操作系统匹配的版本,截止写本教程时,官方版本为Anaconda5.0.1,内部封装的为Python3.6,也可根据需要下载封装其他版本Python的Anaconda3
- 下载地址为:https://www.anaconda.com/download/
1.2 安装
- 根据安装向导逐步进行,注意安装路径中的文件夹名称不要存在空格
1.3 配置环境变量
- 配置系统变量PATH,添加…\Anaconda3\Scripts及…\Anaconda3(根据安装路径确定)
【注意】此图PATH变量中也显示了后续安装过程中添加的信息
1.4 测试
- 测试Python:在cmd中输入Python命令,查看Python版本信息
- 测试Conda:在cmd中输入conda或pip命令,查看具体信息
2
安装Java
2.1 下载
- 下载JDK8,选择与操作系统匹配的版本,注意勾选同意其使用协议后下载
- 下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2.2 配置环境变量
- 新建系统变量JAVA_HOME,值为Java安装路径
- 新建系统变量CLASSPATH,值为“.%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”(注意最前面的圆点)
- 配置系统变量PATH,添加%JAVA_HOME%\bin及%JAVA_HOME%\jre\bin
2.3 测试
- 在cmd中输入java –version命令,查看Java版本信息
3
安装Spark
3.1 下载
- 下载Spark2.2.0,注意与操作系统版本一致
- 下载地址为:http://spark.apache.org/downloads.html
3.2 安装
- 只需解压程序包,并拷贝至存放路径,注意安装路径中的文件夹名称不要存在空格
3.3 配置环境变量
- 新建系统变量SPARK_HOME,值为Spark安装路径
- 配置系统变量PATH,添加%SPARK_HOME%\bin及%SPARK_HOME%\sbin
3.4 配置日志显示级别
- 选择…\spark\conf\目录下log4j.properties.template,复制为log4j.properties
- 将log4j.properties中,"INFO, console"改为"WARN, console"
4
配置Hadoop支持模块
4.1 下载
- 下载Hadoop支持模块
- 下载地址为:https://github.com/LemenChao/Introduction-to-Data-Science/blob/master/Hadoop/hadoop.dll-and-winutils.exe-for-hadoop2.7.3-on-windows_X64-master.zip
4.2 安装
- 只需解压程序包,并拷贝至存放路径,注意安装路径中的文件夹名称不要存在空格
4.3 配置环境变量
- 新建系统变量HADOOP_HOME,值为Hadoop安装路径
- 配置系统变量PATH,添加%HADOOP_HOME%\bin
5
测试Spark
5.1 测试spark
- 在cmd中输入spark-shell,查看Spark版本信息
5.2 测试pyspark
- 在cmd中输入pyspark,查看Pyspark版本信息
6
运行示例代码
6.1 将...\spark\python\pyspark文件夹拷贝至...\Anaconda3\Lib\site-packages文件夹下(注意安装路径)
6.2 安装python的py4j库,Py4j可以使运行于python解释器的python程序动态的访问java虚拟机中的java对象。
6.3 运行示例代码
个人执行过程排错
1.win10 命令提示符cmd不是内部或外部命令的解决方法
在系统环境变量path添加:
- %SystemRoot%\system32
- %SystemRoot%
- %SystemRoot%\System32\Wbem
- %SystemRoot%\System32\WindowsPowerShell\v1.0
2.Exception: Java gateway process exited before sending its port number
确保你前面的配置都没有错。java、spark、Hadoop都配置成功,我自己的问题是因为运行程序的python环境没有被添加到系统变量里去。
3.py4j.protocol.Py4JError: org.apache.spark.api.python.PythonUtils.getEncryptionEnabled does not exist in the JVM
在最开头添加这两行代码:
import findspark findspark.init()
完整测试程序如下:
import findspark findspark.init() from pyspark import SparkContext from pyspark import SparkConf conf = SparkConf().setAppName("miniProject").setMaster("local[*]") sc=SparkContext.getOrCreate(conf) rdd=sc.parallelize([1,2,3,4,5]) rdd1=rdd.map(lambda r:r+10) print(rdd1.collect())