避坑指南

1⃣️版本兼容问题
由于Hadoop生态是开源的,所以难免会出现版本兼容问题。为了保证Hadoop、spark、jdk、python之间可以兼容,建议使用我分享的版本。当然读者也可自己选择兼容的其他版本
2⃣️路径名中文问题
不论是在配置环境变量还是在文件中写路径时,最好路径不要出现中文,因为有可能由于编码的原因造成中文不识别,从而产生很多不必要的麻烦

一、安装jdk1.8

1.jdk下载

首先要保证电脑上安装了jdk,这里下载jdk1.8,可以去官网下载,也可以使用我分享的文件
下载后完成后全部无脑下一步就行,不用修改安装路径,占不了多少c盘空间。

2.环境变量配置

从1.8版本开始会默认在path中添加环境变量

在cmd中输入以下命令

pycharm运行python需要配置环境吗 pycharm需要jdk吗_python


可以正常显示版本就没有问题

这里可以在配置一个JAVA_HOME

环境变量配置的具体步骤如下

我的电脑 - 属性 - 高级系统设置 - 环境变量

pycharm运行python需要配置环境吗 pycharm需要jdk吗_spark_02


点击下面的新建,创建JAVA_HOME,jdk安装路径不知道的可以去Path环境变量中查看一下。

pycharm运行python需要配置环境吗 pycharm需要jdk吗_spark_03

二、安装Hadoop2.7

1.下载并安装Hadoop2.7

可以去官网下载,也可以使用我的分享

下载完成后解压到一个目录下就行,建议专门找一个盘或者一个目录,用来存放Hadoop以及接下来要安装的两个包

pycharm运行python需要配置环境吗 pycharm需要jdk吗_windows_04

2.下载winutils

使用我的分享

下载完成后找到相应的Hadoop版本,这里我们安装的是2.7.1

pycharm运行python需要配置环境吗 pycharm需要jdk吗_python_05


进入该目录,将bin目录下的所有内容复制,粘贴到Hadoop安装目录的bin目录下,添加或替换一些文件

pycharm运行python需要配置环境吗 pycharm需要jdk吗_python_06


pycharm运行python需要配置环境吗 pycharm需要jdk吗_windows_07

3.配置Hadoop环境变量

同jdk环境变量的配置相同

首先配置HADOOP_HOME

pycharm运行python需要配置环境吗 pycharm需要jdk吗_spark_08


然后配置Path,点击新建,浏览Hadoop目录

pycharm运行python需要配置环境吗 pycharm需要jdk吗_spark_09

4.修改hadoop.env.cmd

打开Hadoop安装目录,我的是G:\hadoop-2.7.1\etc\hadoop

找到hadoop.env.cmd文件,用记事本打开,修改下面的内容,可以使用相对路径,也可以使用绝对路径,这里使用绝对路径。

pycharm运行python需要配置环境吗 pycharm需要jdk吗_hadoop_10


由于默认的jdk目录Program Files 有空格,所以修改为以上内容,点击保存。

三、安装python3.6

由于版本问题,使用Hadoop2.7和spark2.4版本只能使用python3.6,所以需要安装python3.6

建议使用anaconda来下载python。anaconda的下载和安装网上教程很多,这里不再赘述。

首先打开Anaconda Navigator

pycharm运行python需要配置环境吗 pycharm需要jdk吗_hadoop_11


点击environments

pycharm运行python需要配置环境吗 pycharm需要jdk吗_python_12


点击create,创建相应的python环境

pycharm运行python需要配置环境吗 pycharm需要jdk吗_spark_13


这里可以看到我有两个环境,一个是base,一个是python36,这两个环境是独立的,互不干扰。在使用某一个环境时,只需要切换到对应的环境即可。

四、安装spark

1.下载spark

可以使用我的分享
下载完并解压,同理,最好跟Hadoop2.7和winutils放在同一个盘或者目录下,方便以后的管理。

2.配置环境变量

同之前一样,需要配置SPARK_HOME和Path

pycharm运行python需要配置环境吗 pycharm需要jdk吗_windows_14


pycharm运行python需要配置环境吗 pycharm需要jdk吗_spark_15

3.拷贝pyspark

进入spark安装目录,我的是G:\spark-2.4.3-bin-hadoop2.7\python

pycharm运行python需要配置环境吗 pycharm需要jdk吗_windows_16


将pyspark复制到Anaconda下的python36目录,我的是F:\AnacondaData\envs\python36\Lib\site-packages

pycharm运行python需要配置环境吗 pycharm需要jdk吗_pycharm_17

4.安装py4j

在cmd进入scripts目录,我的是F:\AnacondaData\envs\python36\Scripts,安装py4j

pycharm运行python需要配置环境吗 pycharm需要jdk吗_python_18

5.测试

打开cmd,输入spark-shell,出现以下内容说明配置成功。

pycharm运行python需要配置环境吗 pycharm需要jdk吗_hadoop_19


或者打开pyspark

这里注意,由于我的电脑安装了多个python版本,一个3.6,一个3.8,而运行pyspark需要3,6版本,因此首先要进行版本切换,即切换到之前提到过的python36环境

输入activate 环境名 ,可以看到左边有个括号,里面显示python36,这就表明进入了3.6的环境

pycharm运行python需要配置环境吗 pycharm需要jdk吗_windows_20


查看一下python版本,果然是3.6

pycharm运行python需要配置环境吗 pycharm需要jdk吗_windows_21


因此,我们可以放心大胆地使用pyspark了,直接输入pyspark

pycharm运行python需要配置环境吗 pycharm需要jdk吗_python_22

五、PyCharm配置

1.创建项目

PyCharm的配置很简单,首先新建一个项目

pycharm运行python需要配置环境吗 pycharm需要jdk吗_hadoop_23


起好名字之后,选择interpreter,这里选择Existing interpreter

找到python36中的python.exe

pycharm运行python需要配置环境吗 pycharm需要jdk吗_pycharm_24


这样一个项目就创建好了。

2.测试代码(单词计数)

新建一个word.txt文件,里面随便写几个单词,用空格分隔

pycharm运行python需要配置环境吗 pycharm需要jdk吗_pycharm_25

新建一个python文件,输入如下代码

pycharm运行python需要配置环境吗 pycharm需要jdk吗_pycharm_26

from pyspark import SparkConf, SparkContext

conf = SparkConf().setAppName("WordCount").setMaster("local")
sc = SparkContext(conf=conf)
inputFile = "word.txt"
textFile = sc.textFile(inputFile)
wordCount = textFile.flatMap(lambda line: line.split(" ")).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b)
wordCount.foreach(print)

右键运行

pycharm运行python需要配置环境吗 pycharm需要jdk吗_pycharm_27


看结果

pycharm运行python需要配置环境吗 pycharm需要jdk吗_spark_28


至此,全部工作已经完成。