(一)安装Anaconda3.4.2

你也可以安装别的版本的,只要查好支持pyspark就行。Anaconda的各种版本下载在参考 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/。下面按我自己配置环境时使用的Anaconda3.4.2为例进行说明。

安装完Anaconda3.4.2之后,配置系统变量
D:\PYTHON35\Anaconda3.4.2;D:\PYTHON35\Anaconda3.4.2\Scripts;D:\PYTHON35\Anaconda3.4.2\Library\bin;
注意,我这里由于安装了两个Python,所以设置系统变量时注意下顺序,不然可能出现覆盖(这类似于Java的jdk和jre包分开放一个道理)

配置完系统变量之后,从命令行窗口输入ipython查看是否出现:

conda 安装 tessocr conda 安装pyspark_SPARK

(二)下载安装spark

去spark.apache下载版本格式类似spark-1.6.0-bin-hadoop2.6.tgz的文件,解压即可,去spark.apache下载你用的版本http://spark.apache.org/downloads.html

解压缩之后:
(1)添加系统环境变量
变量名:SPARK_HOME;变量值:E:\spark
变量名:PATH;变量值:%SPARK_HOME%\bin
(注意:变量名如果之前有,只需要对应设置变量值,和之前的路径用分号“;”隔开就可以,下同;SPARK_HOME的变量值是你的spark放置位置)

(2)添加系统环境变量
变量名:PYSPARK_DRIVER_PYTHON;变量值:ipython
变量名:PYSPARK_DRIVER_PYTHON_OPTS;变量值:notebook

(3)添加系统环境变量

变量名:PYTHONPATH;

变量值:%SPARK_HOME%\python\lib\py4j;

%SPARK_HOME%\python\lib\pyspark

真相在这(注意看路径):

conda 安装 tessocr conda 安装pyspark_conda 安装 tessocr_02

(4)修改spark\conf下的spark-env文件最后加入如下三行:

conda 安装 tessocr conda 安装pyspark_变量名_03

(5)将E:\spark\python路径下的pyspark文件夹复制到Anaconda3.4.2的模块包识别目录site-packages下D:\PYTHON35\Anaconda3.4.2\Lib\site-packages

(三)下载安装sbt(scala编译器)

下载地址:http://www.scala-sbt.org/0.13/docs/zh-cn/Installing-sbt-on-Windows.html

这个地方下载windows版本的sbt国内网网页总跳转失败,可以利用google访问助手,通过google的服务器访问下载:

conda 安装 tessocr conda 安装pyspark_conda 安装 tessocr_04

下载完,正常安装就可以;安装之后同样设置系统环境变量

变量名:PATH;变量值:E:\sbt\bin;

conda 安装 tessocr conda 安装pyspark_SPARK_05

(四)安装差不多完了,在命令行运行pyspark就可以弹出来jupyter notebook了。

conda 安装 tessocr conda 安装pyspark_spark_06

conda 安装 tessocr conda 安装pyspark_变量名_07

我在上述操作之前,配置安装了Java;在命令行输入java和javac都可以给出正常信息输出,不知道是否对后续有用。

此外,有没有人考虑过,为什么spark这么麻烦安装,不像其余包一样直接在命令行窗口pip install package就可以了,又需要依赖scala又需要Java,这里涉及到一个问题——spark的并行工作机制中,需要调用java和scala工作,大致原理如下图:

conda 安装 tessocr conda 安装pyspark_变量名_08


conda 安装 tessocr conda 安装pyspark_变量名_09

本篇参考;
http://ju.outofmemory.cn/entry/171843

C:\ProgramData\Oracle\Java\javapath;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\wbem;
E:\GNUC++\bin;E:\GOW\bin;
D:\PYTHON35\Anaconda3.4.2;D:\PYTHON35\Anaconda3.4.2\Scripts;D:\PYTHON35\Anaconda3.4.2\Library\bin;
D:\PYTHON35\idle;D:\PYTHON35\idle\selenium;
E:\sbt\bin;
%SPARK_HOME%\bin


Anaconda3-2019.10-Windows-x86_64
jdk1.8.0_201
hadoop-2.7.1
spark-2.4.4-bin-hadoop2.7
scala-2.11.8

import findspark
findspark.init()
import pyspark # only run after findspark.init()
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
df = spark.sql('''select 'spark' as hello ''')
df.show()
#+-----+
#|hello|
#+-----+
#|spark|
#+-----+
import findspark
findspark.init()
import pyspark
from pyspark import SparkContext
from pyspark import SparkConf
import os
import re
conf=SparkConf().setAppName("miniProject").setMaster("local[*]")
sc=SparkContext.getOrCreate(conf)
rdd_exist=sc.parallelize([1,2,3,4,5])
rdd_exist
#ParallelCollectionRDD[5] at parallelize at PythonRDD.scala:195
rdd_exist.collect()
#[1, 2, 3, 4, 5]