windows10下python开发spark应用的环境搭建

环境搭建主要涉及到3方面,第1是安装,第2是环境变量的配置,第3是验证安装和配置是否成功,总的涉及到以下5个部分。

环境变量配置是在 此电脑 -》 属性 -》 高级系统设置 -》 高级 -》 环境变量  中最下面的系统环境变量中 可以进行设置。

1、java

从官网下载,这里下载的是 1.8.0_121版。

环境变量配置:

新增 JAVA_HOME  C:\Program Files\Java\jdk1.8.0_121

CLASSPATH 加上 %JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

PATH  中加上 %JAVA_HOME%\bin 和 %JAVA_HOME%\jre\bin

验证:

C:\Users\Administrator>java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

2、spark

从spark官网上下载了 spark-2.3.4-bin-hadoop2.7.tgz,直接解压到D盘

环境变量:

新增 SPARK_HOME   D:\spark-2.3.4-bin-hadoop2.7

在Path 中 增加 %SPARK_HOME%\bin

切换到 D:\spark-2.3.4-bin-hadoop2.7\conf 目录,把文件log4j.properties.template 复制一份,文件名修改为 log4j.properties,打开 log4j.properties 把这行 log4j.rootCategory=INFO, console 中的INFO 改为 WARN,保存,这样在运行程序时,只有WARN级别的消息才会输出到控制台,否则会有大量的INFO信息输出。

3、hadoop

从官网下载hadoop,这里下载的是 hadoop-2.7.3.tar.gz 版本,直接解压到 D盘就可以。

然后需要下载hadoop支持模块,下载地址:Introduction-to-Data-Science/hadoop.dll-and-winutils.exe-for-hadoop2.7.3-on-windows_X64-master.zip at master · LemenChao/Introduction-to-Data-Science · GitHub

把其中的 hadoop.dll文件放到  C:\Windows\System32 目录下

把 winutils.exe 文件放到 D:\hadoop-2.7.3\bin 目录下。

注意,以上所有目录都要按照实际的目录来写,你的目录可能和我上面写的不同。

环境变量:

新建 HADOOP_HOME  d:\hadoop-2.7.3

在Path中添加  %HADOOP_HOME\bin%

4、python

首先要安装好python,我安装的是 3.6.2

C:\Users\Administrator>python
Python 3.6.2rc2 (v3.6.2rc2:8913311, Jul  8 2017, 02:12:29) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

为了让python可以开发spark应用程序,需要把spark安装文件中的支持文件,拷贝到python的相关目录,也就是把

D:\spark-2.3.4-bin-hadoop2.7\python 中的 pyspark目录,拷贝到 C:\Python36\Lib\site-packages 这个目录下(我的python安装路径是 C:\Python36)。

然后,通过 pip install py4j 命令,装 py4j 这个模块:


C:\Users\Administrator>pip install py4j
Collecting py4j
  Using cached https://files.pythonhosted.org/packages/04/de/2d314a921ef4c20b283e1de94e0780273678caac901564df06b948e4ba9b/py4j-0.10.8.1-py2.py3-none-any.whl
Installing collected packages: py4j
Successfully installed py4j-0.10.8.1

这个Py4J 是一个用 Python 和 Java 编写的库,通过 Py4J,Python程序 能够动态访问 Java虚拟机 中的 Java对象,Java程序 也能够回调 Python对象。

最后,还需要安装一个 psutil模块(安装命令为 pip install psutil),这个模块能更好的支持spark的程序的运行(如果没有安装,在运行spark应用程序时 会提示 UserWarning: Please install psutil to have better support with spilling )。

5、验证

分2步,首先是直接用pyspark来登录,然后编写交互式代码来实现wordcount,然后是直接在python中编写spark代码,这2种方式会有些不同。

为了验证,需要先在D盘下创建一个文件 word.txt,内容如下:

hello hadoop
hadoop spark python
flink storm spark
master slave
first
second thrid
kafka scikit-learn
flume
hive spark-streaming
hbase

(1)pyspark

输入pyspark后,进入spark环境,输出的最后1行:SparkSession available as 'spark' 的意思是说,进入spark环境后,系统会自动创建一个类型为 SparkSession 的 spark对象,可以直接引用。

C:\Users\Administrator>pyspark
Python 3.6.2rc2 (v3.6.2rc2:8913311, Jul  8 2017, 02:12:29) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
19/11/06 16:23:28 WARN Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.3.4
      /_/

Using Python version 3.6.2rc2 (v3.6.2rc2:8913311, Jul  8 2017 02:12:29)
SparkSession available as 'spark'.
>>> f = spark.sparkContext.textFile("d:\\word.txt")

>>> wordcount = f.flatMap(lambda w: w.split(" ")).map(lambda word: (word,1)).reduceByKey(lambda a,b: a+b)

>>> wordcount.foreach( print )
[Stage 4:>                                                          (0 + 2) / 2]('hadoop', 2)
('python', 1)
('storm', 1)
('master', 1)
('thrid', 1)
('scikit-learn', 1)
('hive', 1)
('spark-streaming', 1)
('hello', 1)
('spark', 2)
('flink', 1)
('slave', 1)
('first', 1)
('second', 1)
('kafka', 1)
('flume', 1)
('hbase', 1)
>>>

(2)python

进入python后,并不会像上面那么创建spark对象,因为现在并没有进入到spark环境中,只是调用spark的功能,所以要通过

from pyspark import SparkContext 先引入 SparkContext 类型,然后sc = SparkContext( 'local', 'test') 来创建一个sc对象,在通过sc对象的 textFile 方法来读取文件。

C:\Users\Administrator>python
Python 3.6.2rc2 (v3.6.2rc2:8913311, Jul  8 2017, 02:12:29) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> from pyspark import SparkContext

>>> sc = SparkContext( 'local', 'WordCount')

Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).

>>> textFile = sc.textFile("d:\\word.txt")

>>> wordCount = textFile.flatMap(lambda line: line.split(" ")).map(lambda word: (word,1)).reduceByKey(lambda a, b : a + b)
>>> wordCount.foreach(print)
[Stage 0:>                                                          (0 + 1) / 1]D:\spark-2.3.4-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\shuffle.py:59: UserWarning: Please install psutil to have better support with spilling
[Stage 1:>                                                          (0 + 1) / 1]D:\spark-2.3.4-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\shuffle.py:59: UserWarning: Please install psutil to have better support with spilling
('hello', 1)
('hadoop', 2)
('spark', 2)
('python', 1)
('flink', 1)
('storm', 1)
('master', 1)
('slave', 1)
('first', 1)
('second', 1)
('thrid', 1)
('kafka', 1)
('scikit-learn', 1)
('flume', 1)
('hive', 1)
('spark-streaming', 1)
('hbase', 1)
>>>

至此,python开发spark程序的环境,就搭建好了。

你可能感兴趣的:(大数据,hadoop,spark,spark,python,hadoop)