【[2020.6] 数据挖掘:基于Spark框架的K-Means聚类1】Win10下配置Spark环境+Anaconda/Python安装pyspark,超详细
【数据挖掘:基于Spark框架的K-Means聚类1 [2020.6]】Win10下配置Spark环境+Anaconda安装pyspark,超详细Spark框架介绍Win10下Anaconda安装pyspark如何插入一段漂亮的代码片Spark框架介绍Spark框架的介绍离不开Hadoop框架,关于大数据框架的起源以及Hadoop与Spark的介绍在文章《Hadoop与Spark等大数据框架介绍》
【[2020.6] 数据挖掘:基于Spark框架的K-Means聚类1】Win10下配置Spark环境+Anaconda/Python安装pyspark,超详细
【[2020.6] 数据挖掘:基于Spark框架的K-Means聚类2】在Iris数据集上借助pyspark实现K-Means聚类
Spark框架介绍
Spark框架的介绍离不开Hadoop框架,关于大数据框架的起源以及Hadoop与Spark的介绍在文章《Hadoop与Spark等大数据框架介绍》中已经很详尽了,这里不再赘述。
Hadoop:Hadoop的核心是HDFS和Mapreduce,hadoop2.0还包括YARN。
- HDFS(Hadoop分布式文件系统):Hadoop体系中数据存储管理的基础。
- YARN(Yet Another Resource Negotiator):一种 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
- MapReduce(分布式计算框架):一种计算模型,用以进行大数据量的计算。
Spark:Spark是一种大数据框架,同时也是是专为大规模数据处理而设计的快速通用的计算引擎。它的出现往往会有Hadoop的身影,其实Hadoop更多的可以看做是大数据的基础设施,它本身提供了HDFS文件系统用于大数据的存储,当然还提供了MapReduce用于大数据处理,但是MapReduce有很多自身的缺点,针对这些缺点也已经有很多其他的方法,类如针对MapReduce编写的复杂性有了Hive(基于Hadoop的数据仓库),针对MapReduce的实时性差有了流处理等等。Spark设计也是针对MapReduce功能的,它并没有大数据的存储功能,只是改进了大数据的处理部分,它的最大优势就是快,因为它是基于内存的,不像MapReduce每一个job都要和磁盘打交道,所以大大节省了时间,它的核心是RDD(分布式内存抽象),RDD是Spark最核心最精髓的部分,Spark将所有数据都抽象成RDD,里面体现了一个弹性概念意思就是说,在内存存储不下数据的时候,Spark会自动的将部分数据转存到磁盘,而这个过程是对用户透明的。
Win10下Anaconda安装pyspark
安装时参考了很多博客,发现有的博客的安装方法无法成功或者安装 顺序混乱,这里参考了一些博客1 2 3整理了一下完整的安装步骤。
因为有些配置的包或文件不好下,所以我这里将所有用到的包或文件(spark-2.4.5-bin-hadoop2.7,hadoop-2.7.1,jdk-8u121-windows-x64,winutils)放在百度云盘中,提取码:zwfc 。
-
1. 安装java/JDK
注意,JDK版本必须是JDK9之前的版本,比如JDK1.8,否则测试pyspark时就有warning4,这里使用8u121-windows-x64.exe.安装完设置环境变量,设置系统变量(右键我的电脑,依次点击属性-高级系统设置-环境变量),新建添加JAVA_HOME和CLASSPATH。若是一路默认安装的话,JDK安装的默认位置就在C:\Program Files\Java.
然后在环境变量中找到Path,并新建添加
%JAVA_HOME%\bin
配置完毕,win键+R键,输出cmd,打开命令行窗口,输入java -version,回车执行,出现版本信息说明安装成功。
-
2. 安装Spark
注意,这里使用spark-2.4.5-bin-hadoop2.7.tgz,我这里解压到D:\Softwares\environments\,该路径一定不能带空格,hadoop2.7表明对应的hadoop版本要在Hadoop2.7及其以后,spark-2.4.5-bin-hadoop2.7可以在Spark官网或官网archive下载。【ps】要找以前的版本也可以在Spark release archives查找并下载。
解压后添加环境变量SPARK_HOME,注意这里的路径是你解压的路径。
然后在环境变量中找到Path,并新建添加%SPARK_HOME%\bin
-
3. 安装Hadoop
注意,这里使用hadoop-2.7.1.tar.gz,解压到D:\Softwares\environments\,该路径一定不能带空格。hadoop-2.7.1.tar.gz的下载我找了三种下载源,下载源1:百度网盘,下载源2:hadoop archive,下载源3:Releases Archive,其中下载源1是最快的。解压后,添加环境变量HADOOP_HOME,注意这里的路径是你解压的路径。
然后在环境变量中找到Path,并新建添加
%HADOOP_HOME%\bin
-
4. 下载winutils工具修改权限
winutils.exe是用于改变文件或文件夹读写权限的工具。通过steveloughran的git仓库下载对应的hadoop-2.7.1的bin文件夹,然后使用bin文件夹替换hadoop文件夹路径下的bin文件夹。然后以管理员的身份打开cmd,通过cd命令进入到Hadoop的bin目录下,执行以下命令:winutils.exe chmod 777 C:\tmp\Hive。
【ps】以管理员身份打开cmd:按Win键,依次选中Windows 系统,右键命令提示符,点击更多,点击以管理员身份运行;或者,win键+X键,选择powershell(管理员) 。
注意,若提示错误,检查 C:\tmp下Hive目录是否存在,若不存在,则手动创建Hive文件夹,再重新执行上述命令。 -
5. 安装py4j库
注意,这里假设已经安装好了Anaconda环境并设置好了环境变量,如果没有的话,安装也很方便,有很多博客教程,但是去Anaconda官网下载anaconda安装包可能比较慢,可以去清华镜像源下载win-x86的exe文件。现在安装py4j库,打开一个cmd命令行窗口,activate 或 activate tf2-1启动base或tf2-1环境,然后conda install py4j。tf2-1是我自己建的一个conda环境,python版本是3.7.7.
-
6. 测试Spark是否安装成功
重新打开一个cmd命令行窗口,输入pyspark,显示spark图像,但会warning提示python解释器在conda环境中,但conda环境未被激活(此时可能会有一个确认使用公用网络的弹窗,允许访问即可)。 -
7. 复制pyspark模块到Anaconda并再次测试
将pyspark文件夹(spark-2.4.5-bin-hadoop2.7\python\pyspark)复制到Anaconda3\Lib\site-packages目录下(base环境)或Anaconda3\envs\tf2-1\Lib\site-packages目录下(tf2-1环境)
然后测试conda环境中的spark,在第6不的命令行窗口中接着再次输入pyspark,显示spark图像,但是没有了warning。
然后,ctr+d退出sparkshell,cd到开头百度云盘中测试文件spark_test.py目录,pytho spark_test.py,观察结果,若输出如下结果文件安装成功。
【ps1】从安装步骤可以看出,anaconda环境只是提供了一个方便管理的python环境,假如我们没有安装anaconda环境,我们只需要从第5步开始只在python shell中执行,conda命令换成pip命令,同时第7步中复制pyspark模块到python文件夹中的site-packages目录下即可。
【ps2】spark_test.py内容
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 wd[w] in dict:
dict[wd[w]] += 1
else:
dict[wd[w]] = 1
return dict
print(doc.map(wordCountPerDoc).collect())
print("successful!")
更多推荐
所有评论(0)