window10搭建pyspark的两种方法(基于spark-3.0.0-bin-hadoop2)
window10搭建pyspark的两种方法(基于spark-3.0.0-bin-hadoop2)
最最简便的方法就是直接pip install pyspark
如果安装出现timeout,可以下载pyspark-3.0.0.tar,然后离线安装
方法:cd进入pyspark-3.0.0.tar解压的目录,里面有个setup.py
然后运行命令:python setup.py install, 等待安装完成,所以的环境问题都一次帮你解决完。
-----------------------------------------下面是笨方法---------------------------------------------------------------
Java JDK:jdk-8u261-windows-x64
winutils-master(GitHub上下载,然后将相应hadoop版本目录下的winutils.exe拷贝到spark相应目录,见下面详细部分)
配置环境变量的方法为电脑[右键]——>属性——>环境变量,编辑环境变量方法见下图
cmd中输入exit退出,然后command+r键快速启动cmd。
而且cmd中用set命令设置的环境变量只是对当前cmd有效,退出重启后无效。
因此采用下面的方式永久设置环境变量,这个和GUI设置系统环境变量是一样。
wmic ENVIRONMENT where "name='JAVA_HOME'" delete
setx JAVA_HOME D:\installed\java
https://www.scala-lang.org/download/2.13.3.html
http://spark.apache.org/downloads.html
有的浏览器在点击下拉框后会出现问题,但是不要担心,一直往下拉,点击 *spark release archives*
我下载的是:spark-3.0.0-bin-hadoop2.7-hive1.2
PROGRA~1 ===== C:\Program Files 目录的dos文件名模式下的缩写
长于8个字符的文件名和文件夹名,都被简化成前面6个有效字符,后面~1,有重名的就 ~2,~3,
"C:\Program Files"\Java\jdk1.8.0_91
安装好anaconda3后,这个就直接安装好了。如果在终端发现输入Python后,没有进入交互模式,则是没有设置anaconda3的环境变量,则添加环境变量和path路径就OK了,这下面三个都要添加。
D:\softwares\Anaconda\anaconda;D:\softwares\Anaconda\anaconda\Scripts;D:\softwares\Anaconda\anaconda\Library\bin;
6、把winutils-master的bin覆盖hadoop-2.7.7的bin
1,将D:\installed\spark-3.0.0-bin-hadoop2.7-hive1.2\python目录下的pyspark文件夹拷贝到python文件夹下C:\Users\Administrator\anaconda3\Lib\site-packages
一般的在cmd命令行下 pip install py4j 就可以。若是没有将pip路径添加到path中,就将路径切换到python的Scripts中,然后再 pip install py4j 来安装库。
将上面一样版本的winutils.exe文件放到spark的bin目录下(我的是D:\installed\spark-3.0.0-bin-hadoop2.7-hive1.2\bin),然后以管理员的身份打开cmd,然后通过cd命令进入到D:\installed\spark-3.0.0-bin-hadoop2.7-hive1.2\bin目录下,且要先建目录c:\tmp\hive,然后执行以下命令:
winutils.exe chmod 777 c:\tmp\hive
注意:如果出现什么pro*什么错误的不用管,继续输入命令,也就消失了。
from pyspark import SparkConf, SparkContext# 创建SparkConf和SparkContextconf = SparkConf().setMaster("local").setAppName("lichao-wordcount")sc = SparkContext(conf=conf)# 输入的数据data = ["hello", "world", "hello", "word", "count", "count", "hello"]# 将Collection的data转化为spark中的rdd并进行操作rdd = sc.parallelize(data)resultRdd = rdd.map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b)# rdd转为collecton并打印resultColl = resultRdd.collect()for line in resultColl: print(line)
spark:ValueError: Cannot run multiple SparkContexts at once
ValueError: Cannot run multiple SparkContexts at once; existing SparkContext(app=PySparkShell, master=local[*]) created by at D:\Program Files\Anaconda3\lib\site-packages\IPython\utils\py3compat.py:186 。这句话意思就是说,不能一次性开多个sc(SparkContext),因为之前已经存在一个Spark Contexts,所以再创建一个新的sc会报错。所以解决错误的办法就是,必须把已有的sc给关闭掉,才能创建新的sc。那怎么去关闭呢?我们可以用sc.stop()函数就可以关闭了。