【[2020.6] 数据挖掘:基于Spark框架的K-Means聚类1】Win10下配置Spark环境+Anaconda/Python安装pyspark,超详细

【[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 。
baidu

  • 1. 安装java/JDK
    注意,JDK版本必须是JDK9之前的版本,比如JDK1.8,否则测试pyspark时就有warning4,这里使用8u121-windows-x64.exe.

    安装完设置环境变量,设置系统变量(右键我的电脑,依次点击属性-高级系统设置-环境变量),新建添加JAVA_HOMECLASSPATH。若是一路默认安装的话,JDK安装的默认位置就在C:\Program Files\Java.
    JAVA_HOME
    CLASSPATH
    然后在环境变量中找到Path,并新建添加

%JAVA_HOME%\bin

Path
Pathadd
配置完毕,win键+R键,输出cmd,打开命令行窗口,输入java -version,回车执行,出现版本信息说明安装成功。
javaversion

  • 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,注意这里的路径是你解压的路径。
    sparkhome
    然后在环境变量中找到Path,并新建添加

    %SPARK_HOME%\bin

    pathspark

  • 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,注意这里的路径是你解压的路径。
    Hadoophome
    然后在环境变量中找到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(管理员) 。
    winutils
    注意,若提示错误,检查 C:\tmp下Hive目录是否存在,若不存在,则手动创建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!")

  1. win10下安装pyspark ↩︎

  2. 在windows安装部署spark(python版) ↩︎

  3. win10+pyspark+pycharm+anaconda单机环境搭建 ↩︎

  4. An illegal reflective access operation has occurred ↩︎

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mahout是一个基于Hadoop的机器学习库,其中包含了很多常用的机器学习算法,包括K-Means聚类算法。下面是基于Mahout实现K-Means聚类的步骤: 1. 准备数据 将需要聚类的数据准备好,以适合Mahout输入格式的方式存储,例如HDFS上的文本文件。 2. 配置Mahout 在Hadoop集群上安装Mahout,并配置Hadoop和Mahout的环境变量。 3. 运行K-Means聚类 使用Mahout中的kmeans命令来运行K-Means聚类算法,命令格式如下: ``` mahout kmeans -i <input> -c <centroids> -o <output> -dm <distanceMeasure> -k <k> ``` 其中,参数含义如下: - input:输入数据路径 - centroids:初始质心路径 - output:输出结果路径 - distanceMeasure:距离度量方法,例如EuclideanDistanceMeasure - k:聚类数量 4. 分析结果 分析K-Means聚类的结果,可以使用Mahout中的clusterdump命令来输出聚类结果,例如: ``` mahout clusterdump -i <input> -o <output> -p <points> -d <dictionary> -dt <distanceMeasure> ``` 其中,参数含义如下: - input:聚类结果路径 - output:输出结果路径 - points:数据点路径 - dictionary:词典路径 - distanceMeasure:距离度量方法 以上是基于Mahout实现K-Means聚类的步骤,需要注意的是,Mahout的输入格式和输出格式都需要按照Mahout要求的格式进行,否则会导致运行失败。同时,在运行过程中,需要根据实际情况调整参数,以达到最佳的聚类效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值