pyspark是spark的python API,本质上其实没有差别,只是开发的语言换了一下,书写的语法不一样而已,所以有Spark的Scala基础的朋友,只需要解决Python语言的书写,其他的就没有问题了
想用pyspark开发需要准备一些东西
1、JAVAJDK
2、Hadoop
3、Spark
4、PyCharm ---开发工具自定义
5、findspark、pyspark、py4j三个pyspark开发用的包
上面的东西前三个我就不演示了,大家在本地准备好并且配置好环境变量就可以了,我这里主要是告诉大家怎么样配置pyspark的开发环境
1、打开PyCharm,准备好要开发pyspark的python项目
2、为这个项目添加spark和pyspark的运行环境
点击下图中的选项,打开界面
打开之后在左侧的信息项中找到python选项,并点击右侧的图标打开Envir…的编辑界面
打开之后你要在这个界面配置SPARK_HOME和PYTHONPATH,配置完成OK保存退出,注意点击确定之后有时候sparkhome会因为有系统环境变量存在所以自动消失,这个不用管
3、为当前项目添加pyspark的链接库
打开File-->settings
界面,找到如下配置项,并点击右侧的Add
在点击Add之后,在打开的文件界面中找到你的Spark安装目录,在安装目录下Spark自带了pyspark和py4j,你只需要选中两个文件,并点击OK即可
4、为当前项目添加Spark初始化的第三方包
任然是在File-->settings
界面,进入如下配置项,并点击右侧的加号
在打开的界面中搜索findspark包,并安装
等待一会会有提示
5、到此我们就可以正常使用pyspark开发了,下面给大家准备了一个测试例子的wordcount
import findspark
findspark.init()
from pyspark import *
import os
os.environ['JAVA_HOME'] = 'D:\javagj\javajdk'
conf = SparkConf().setMaster(value='local')
con = SparkContext(conf=conf).getOrCreate()
firstRDD = con.parallelize( c = ["123","123","123","456","789"])
mapRDD = firstRDD.map(f = lambda word : (word ,1))
result = mapRDD.reduceByKey(func= lambda w1 , w2 : w1 + w2 )
result.foreach( f = lambda a : print(a))
con.stop()
最后记住一个相当重要的事情,pyspark支持的python环境,截止到2021-9月最高支持python3.7的环境,再高了就不支持了会一直报错