本人系统是windows,64位
要想在windows下搭建Spark(python版本)主要分为:
- JDK安装配置
- Scala安装配置
- Spark安装配置
- Hadoop安装配置
- Python安装配置
- PyCharm运行
JDK安装配置
JDK 版本需要在 1.8
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
配置环境变量
添加变量 JAVA_HOME 值为jdk目录
在path 追加 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
保存后
cmd 运行 java -version
Scala安装配置
Scala download 下载对应scala 版本 【注意:Scala 1.6.2版本只能使用Spark 2.10各个版本;Scala 2.10.6 可适配Spark1.3.0到1.6.2】
windows 下直接下载msi 直接运行 会自动写入到path
安装完毕,验证Scala
[如果系统找不到scala 命令,就自己手动将scala安装目录加入到 系统环境变量的path]
Spark安装配置
spark download 安装spark
安装的目录应该是要与spark bin的 同一层上
解压后
运行cmd
spark-shell
这时应该还没成功的,会有报错
请看下一步
Hadoop安装配置
hadoop 2.6.4 download
下载hadoop解压之后
设置环境变量
添加 HADOOP_HOME 值为hadoop解压目录
添加path ;%HADOOP_HOME%\bin
下载2.6版本hadoop 会缺少winutils.exe
去 http://blog.csdn.net/u011513853/article/details/52865076 下载对应hadoop 版本的winutils.exe
下载完毕后 将 winutils.exe 复制到 %HADOOP_HOME%\bin 目录下
注意:2.7版本也适用于2.6
还要重点注意!!
需要修改 winutils.exe 访问权限
先进入 到%HADOOP_HOME%\bin 目录下
hadoop fs -chmod -R 777 /tmp
运行 spark-shell
从图中可以看到,在直接输入spark-shell命令后,Spark开始启动,并且输出了一些日志信息,大多数都可以忽略,需要注意的是两句话:
Spark context available as sc.
SQL context available as sqlContext.
Python安装配置
windows 下的话就很简单啦,直接下载msi点击运行就可以了
https://python-xy.github.io/downloads.html
这里是python(X,Y)已经包含spark需要的lib了,所以很方便
python 下载,如果是msi就自动加入path,如果不行就手动加入吧
cmd输入 python
PyCharm运行
Pycharm IDE 下载
http://www.jetbrains.com/pycharm/download/#section=windows
1 设置工程的环境变量
2 引入相关的spark库
3.测试spark
__author__ = 'Helen Huang'
import os
import sys
os.environ['SPARK_HOME']="D:\spark\spark-1.6.2-bin-hadoop2.6\spark-1.6.2-bin-hadoop2.6"
sys.path.append("D:\spark\spark-1.6.2-bin-hadoop2.6\spark-1.6.2-bin-hadoop2.6\python")
from pyspark import SparkContext
sc = SparkContext('local')
doc = sc.parallelize([['a','b','c'],['b','d','d']])
words = doc.flatMap(lambda d:d).distinct().collect()
word_dict = {w:i for w,i in zip(words,range(len(words)))}
word_dict_b = sc.broadcast(word_dict)
def wordCountPerDoc(d):
dict={}
wd = word_dict_b.value
for w in d:
if dict.has_key(wd[w]):
dict[wd[w]] +=1
else:
dict[wd[w]] = 1
return dict
print doc.map(wordCountPerDoc).collect()
print "successful!"
输出为 successful! 则配置成功了!!!
至于IDE的话也可以用IDEA IntelliJ ,不过配置会复杂些~