材料:
spark : http://spark.apache.org/downloads.html
hadoop : http://hadoop.apache.org/releases.html
jdk: http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
hadoop-commin : https://github.com/srccodes/hadoop-common-2.2.0-bin/archive/master.zip (for windows7)
需要下载对应的版本
步骤:
a. 安装jdk,默认步骤即可
b. 解压spark (D:\spark-2.0.0-bin-hadoop2.7)
c. 解压hadoop (D:\hadoop2.7)
d. 解压hadoop-commin (for w7)
e. copy hadoop-commin/bin to hadoop/bin (for w7)
SPARK_HOME = D:\spark-2.0.0-bin-hadoop2.7
HADOOP_HOME = D:\hadoop2.7
PATH append = D:\spark-2.0.0-bin-hadoop2.7\bin;D:\hadoop2.7\bin
a. copy D:\spark-2.0.0-bin-hadoop2.7\python\pyspark to [Your-Python-Home]\Lib\site-packages
b. pip install py4j
c. pip install psutil
(for windows: http://www.lfd.uci.edu/~gohlke/pythonlibs/#psutil)
cmd -> pyspark 不报错并且有相应的cmd
—————————————————————————————————— 2018-5-11更新
目前spark 不兼容 Python3.6 ,因此通过anaconda创建虚拟环境变量python3.5
之后开启安装之路:
同时在path中添加如下: %SPARK_HOME%\bin %SPARK_HOME%\sbin %HADOOP_HOME%\bin
选择…\spark\conf\目录下log4j.properties.template,复制为log4j.properties
将log4j.properties中,”INFO, console”改为”WARN, console”
1,将spark所在目录下(比如我的是D:\Software\spark-2.2.0-bin-hadoop2.7\python)的pyspark文件夹拷贝到python文件夹下(我的是D:\Program Files\python3.5.3\Lib\site-packages)
具体目录要看大家自己安装的时候是放在哪的!
2,安装py4j库
一般的在cmd命令行下 pip install py4j 就可以。若是没有将pip路径添加到path中,就将路径切换到python的Scripts中,然后再 pip install py4j 来安装库。
3,修改权限
将winutils.exe文件放到Hadoop的bin目录下(我的是D:\Software\hadoop-2.7.3\bin),然后以管理员的身份打开cmd,然后通过cd命令进入到Hadoop的bin目录下,然后执行以下命令:
winutils.exe chmod 777 c:\tmp\Hive
注意:1,cmd一定要在管理员模式下!cmd一定要在管理员模式下!cmd一定要在管理员模式下!
2,‘C:\tmp\hive’,一般按照上面步骤进行了之后会自动创建的,一般是在Hadoop的安装目录下出现。但是若没有也不用担心,自己在c盘下创建一个也行。
关闭命令行窗口,重新打开命令行窗口,输入命令:pyspark
在D:\spark\spark-2.2.0-bin-hadoop2.7\bin中找到pyspark文件,采用notepad打开,并在其中增加
export PYSPARK_PYTHON 改为 export PYSPARK_PYTHON3
再次打开bin/pyspark即配置完成pyspark采用python3
通过以上操作完成. 下面来测试
from pyspark import SparkContext
from pyspark import SparkContext as sc
from pyspark import SparkConf
conf=SparkConf().setAppName("miniProject").setMaster("local[*]")
sc=SparkContext.getOrCreate(conf)
rdd = sc.parallelize([1,2,3,4,5])
rdd
print(rdd)
print(rdd.getNumPartitions() )
输出结果:
ParallelCollectionRDD[0] at parallelize at PythonRDD.scala:480
8