Spark安装
在学习spark之前,需要了解spark的运行机制,推荐知乎一篇文章spark原理简述
在部署spark之前,得先部署hadoop。在部署hadoop之前需要安装jdk。网盘里有相应的安装包(链接:https://pan.baidu.com/s/1288s7F7g_1caq4aXbjla-Q
提取码:l7xp
复制这段内容后打开百度网盘手机App,操作更方便哦)
1. 下载spark
- 官网下载,spark官网选择合适的版本。解压压缩包在本地的存放路径不能带空格。例如D:\spark
- 添加环境变量,并在path内添加
%SPARK_HOME%
#对应路径为spark解压路径D:\spark
%SPARK_HOME%\bin
%SPARK_HOME%\sbin
-
打开cmd,输入spark-shell.没有问题的话出现下图。
[
图片上传失败...(image-e30e9-1603679334116)]
-
- 如果在pycharm中运行spark,需要调用pyspark包,可以将D:\spark\python目录下的pyspark文件夹拷贝到,\python的安装路径\Lib\site_packages。(注:spark2.1版本和python3.6以及以上版本不兼容,可以和python3.5兼容。spark2.2版本可以和python3.6兼容。如果使用anaconda的,需要创建一个python3.5的环境,conda create -n python35 python=3.5,pyspark应该拷贝到\anaconda路径\env\python35\lib\sitepakages下。python运行spark还有一个重要的包py4j,可以pip list py4j,也可以在通过sys.path.append("Spark/python/lib/py4j-0-9-src.zip"),添加py4j)
wordcount示例如下
- 如果在pycharm中运行spark,需要调用pyspark包,可以将D:\spark\python目录下的pyspark文件夹拷贝到,\python的安装路径\Lib\site_packages。(注:spark2.1版本和python3.6以及以上版本不兼容,可以和python3.5兼容。spark2.2版本可以和python3.6兼容。如果使用anaconda的,需要创建一个python3.5的环境,conda create -n python35 python=3.5,pyspark应该拷贝到\anaconda路径\env\python35\lib\sitepakages下。python运行spark还有一个重要的包py4j,可以pip list py4j,也可以在通过sys.path.append("Spark/python/lib/py4j-0-9-src.zip"),添加py4j)
#-*- coding:utf-8 -*-
'''
created on Mon Oct 10
@author:Hang li
'''
import sys
import os
from operator import add
from pyspark import SparkContext
from pyspark import SparkConf
os.environ["JAVA_HOME"]="D:\\java"
os.environ["SPARK_HOME"]="E:\\Spark"
sys.path.append("E:\\Spark\\python")
sys.path.append("E:\Spark\python\lib")
if __name__ == "__main__":
sc = SparkContext("local")
lines = sc.textFile("file:///D:\\pyspark_learn\\word.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()
- 运行pyspark程序的时候,会遇到py4j.protocol.Py4JJavaError:An error occurred while calling o20.partitions.错误。
原因spark默认是去hdfs寻找文件,如果要想读取本地文件,应该在sc.testFile("路径"),在路径前面添加hdfs:///表示从hdfs文件系统上读取文件。在路径前面加上file:///E:\data\wordcount.txt,表示从本地文件系统读取文件。
- 运行pyspark程序的时候,会遇到py4j.protocol.Py4JJavaError:An error occurred while calling o20.partitions.错误。