Windows和Linux下安装Spark教程

1.准备工作:

linux:spark2.2.1+scala2.11.12+java1.8+python3.6

867DD1AB-8218-7436-0F92-CA65638287ED.png

windows:spark2.2.1+scala2.12.4+java1.8+python3.6

E8B1F807-557B-5B45-F2B3-C288276B0E5C.png

由于这些版本都是对应的,python,jdk,scala这三个都要安装,一个都不能少,所以我们需要配套安装。anaconda和jdk很好下载,我就不放百度云链接了,这里只有scala和spark(linux和windows都有):

链接:https://pan.baidu.com/s/1G-oapQdAOEK_kkH86QD_dw 密码:c4pu

我写神经网络是在spark上用python写的,所以要装python(anaconda),而spark使用scala写的,scala需要java支持,这就是为什么要装这么多的原因。我也不知道我解释清楚没.....

2.1安装(windows):

anaconda,java还有scala的安装网上一搜索大把都是,所以自行解决。记得路径还有环境变量。

这里先导入几个python包:分别是pyspark和py4j

pip install pyspark

pip install py4j

spark的安装(Windows):

先解压,到目录:

17E100E6-1AEC-BA6C-2942-F8C8CC04C366.png

然后配置环境变量,和java他们很相似:

第一步:

B3EF4051-6777-5F1E-8D7D-46340E4947BA.png

第二步:(最后一行)

D5C88D4B-A9CF-5AC5-7A41-6D0EB09B733F.png

。到这里之后,spark就完了。我们测试一下:

dos下输入spark-shell(当出现下图时,就代表你ok啦)

F7617CFF-D137-4102-5965-8B21E161EE34.png

2.2安装(linux)

和2.1中的前提一样,安装好jdk,anaconda以及导入pyspark和py4j

解压到你的指定路径:

C5002436-BE48-3F9C-310C-BC115A4DB1EE.png

这里注意啊,我soft文件夹是所有权限都给了,以防权限问题

chmod 777 soft

接下来配置环境变量:

在/etc目录下的 profile文件 ,我用的是

sudo nano /etc/profile

我贴上我环境配置(注意自己的路径):

export PATH=$PATH:/usr/soft/nginx/nginx-1.8.0/sbin


#JAVA_HOME
export JAVA_HOME=/usr/soft/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH

#SCALA_HOME
export SCALA_HOME=/usr/soft/spark_files/scala-2.11.12
export PATH=$PATH:$JAVA_HOME/bin:${SCALA_HOME}/bin:$PATH

#SPARK HOME
export SPARK_HOME=/usr/soft/spark_files/spark-2.2.1-bin-hadoop2.7
#export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$FINGBUGS_HOME/bin:$HADOOP_HOME$
PATH=$PATH:${SPARK_HOME}/bin

#pythonpath
export PYTHONPATH=/usr/soft/spark_files/spark-2.2.1-bin-hadoop2.7/python

注意的spark_home和pythonpath。这两个都是给spark配置的,自己之前anaconda的不是这个。这个路径是spark里的

然后就可以测试了,命令行输入pyspark(python测试)或者spark-shell(scala测试)。等出现下图就ok了

7ADFA1A1-9B7F-02A8-5BE3-1D229B507423.png

3.1代码测试(windows)

我自己用的是pycharm,我们先看配置

先新建一个自己的python测试文件,然后:

2E9840E7-4D05-2B0D-5513-0EA41F40AAD7.png

然后:(红色是自己新建的文件,代码我一会给,黄色是下图即将配置的路径)

EBAA7F58-3F74-5A3D-B83B-BC17D98C785E.png

上图黄色内容(手动滑稽):

5034A5B9-BDD9-6C91-DAD3-639A169B445D.png

说明一下:spark路径,pythonpath,javahome都是在spark下的,而且变量名不能打错,比如,python_home就是不行的

如图:

17DF977E-7335-B22F-76A1-56A281261B0B.png

A74501CC-941A-5BD0-525B-0EEA0A606FE7.png

,然后我给上测试代码:

#!D:/workplace/python
# -*- coding: utf-8 -*-
# @File  : Spark_test.py
# @Author: WangYe
# @Date  : 2018/8/10
# @Software: PyCharm
# spark,伪分布式测试
import pymysql
import pyspark
import os
from pyspark import SparkConf, SparkContext
os.environ['JAVA_HOME']='D:\Java\jdk1.8'
conf = SparkConf().setMaster('local[*]').setAppName('word_count')
sc = SparkContext(conf=conf)
d = ['a b c d', 'b c d e', 'c d e f']
d_rdd = sc.parallelize(d)
rdd_res = d_rdd.flatMap(lambda x: x.split(' ')).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a+b)
print(rdd_res)
print(rdd_res.collect())

运行结果:

D6995E8A-FF38-6B74-668D-2397A7B8D289.png

3.2代码测试(linux)

我linux是centos的,在测试代码路径下直接

python spark_test.py

就可以啦

代码:

#!D:/workplace/python
# -*- coding: utf-8 -*-
# @File  : test.py
# @Author: WangYe
# @Date  : 2018/8/13
# @Software: PyCharm
from pyspark import SparkConf,SparkContext
conf=SparkConf().setMaster('local').setAppName('word_count')
sc = SparkContext(conf=conf)
d = ['a b c d', 'b c d e', 'c d e f']
d_rdd = sc.parallelize(d)
rdd_res = d_rdd.flatMap(lambda x: x.split(' ')).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a+b)
print(rdd_res.collect())

运行截图:

9592377C-BC39-257D-C500-02FDDDBF0374.png
4.错误总结:

很多人在运行的时候会提示java端口号的问题,各种百度google没解决,然后我总结了一下。请大家在我的另一个博客中看看解决方案:(错误贴图) Spark下:Java Gateway Process Exited Before Sending The Driver Its Port Number等问题

raise Exception("Java gateway process exited before sending the driver its port number")

Exception: Java gateway process exited before sending the driver its port number

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的