在部署spark之前你得先确定你已经成功部署了Hadoop,如果没有的话,请看我上一篇文章:https://blog.csdn.net/zhongjunlang/article/details/80812669
1.首先下载Spark http://spark.apache.org/downloads.html 选择合适的版本,这里我下载了最近的版本
下载完解压包之后对解压包进行解压,注意存放的路径一定不能带空格,例如放到C:\Program Files就不行。这里我放到了G:\spark
2添加环境变量,并在Path中添加
%SPARK_HOME%
%SPARK_HOME%\bin
%SPARK_HOME%\sbin
3.这时,你可以利用打开cmd,输入pySpark。没有问题的话,你可以看到下图
如果想再命令行中使用,那到这里就可以了。如果想再pycharm中使用,请继续往下看。
4.要想在PyCharm中调用pySpark,需要加载包。
将G:\spark\spark_2.3.1_bin_hadoop2.7\python
文件夹下pySpark文件夹拷贝到C:\Python27\Lib\site-packages
(注:我的python安装目录是这个路径,可能有的读者利用anaconda等,这个路径根据实际情况改变)
5.pyCharm spark_test2示例
新建spark_test2.py文件,写代码
import sys
from operator import add
from pyspark import SparkContext
if __name__ == "__main__":
sc = SparkContext(appName="PythonWordCount")
lines = sc.textFile('words.txt')
counts = lines.flatMap(lambda x: x.split(' ')) \
.map(lambda x: (x, 1)) \
.reduceByKey(add)
output = counts.collect()
for (word, count) in output:
print "%s: %i" % (word, count)
sc.stop()
代码中words.txt内容如下
good bad cool
hadoop spark mlib
good spark mlib
cool spark bad
然后运行,运行后应该会出错了,我的错误如下:
稳住,先不慌,我们再pycharm中配置一下
我们在runconfig 中加入环境变量 再次运行,就会得到如下结果:
如果不用这种方法的话,其实也还有一种方法,那就是在py文件里添加2行代码:
os.environ['SPARK_HOME']="G:\spark\spark_2.3.1_bin_hadoop2.7"
sys.path.append("G:\spark\spark_2.3.1_bin_hadoop2.7\python")
例如:
import os
import sys
os.environ['SPARK_HOME']="G:\spark\spark_2.3.1_bin_hadoop2.7"
sys.path.append("G:\spark\spark_2.3.1_bin_hadoop2.7\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!"
这样也会运行成功的:
再附加一个骚骚的图,打码部分不适合可见