热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sparkdemo之wordcount和K-means

由于Scala的学习成本有些高,所以,以下的demo都是基于python的。如果想了解spark架构,可以移步到博客点击打开链接Wordcount介绍作为类似于hello

由于Scala的学习成本有些高,所以,以下的demo都是基于python的。如果想了解spark架构,可以移步到博客点击打开链接

Wordcount介绍

作为类似于hello word一样经典的入门代码,wordcount主要是完成词频统计的,在spark框架中,它仍然是map和reduce两个步骤,但是代码的很简洁。

代码如下:

#!bin/lib/python
 
import sys
from operator import add
 
from pyspark import SparkContext
 
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
 
if __name__ == "__main__":
    //定义上下文环境
    sc = SparkContext(appName="PythonWordCount")
    //从输入读取数据
    lines = sc.textFile("hdfs://yz-cpu-vm001.hogpu.cc:8020/user/yichen.gong/data/mnli_data/glove.840B.300d.txt",1)
    //数据处理,划分,map,reduce
    counts = lines.flatMap(lambda x: x.split(' ')) \
                  .map(lambda x: (x,1)) \
                  .reduceByKey(add)
    output = counts.collect()
    //结果写回hdfs
    counts.saveAsTextFile("hdfs://yz-cpu-vm001.hogpu.cc:8020/user/laipeng.han/output")
    for (word,count) in output:
        print "%s: %i" %(word,count)
    sc.stop()

其提交指令为:

export HADOOP_CONF_DIR=/usr/hdp/2.5.0.0-1245/hadoop/conf

spark-submit \

  --master yarn \

  --deploy-mode cluster \

  --queue debugqueue \

   /home/users/laipeng.han/wordcount.py

以下是必要的参数,参数说明:

master:The master URL for the cluster,由于我用到架构的调度器为yarn,所以这里我们只能写yarn。

deploy-mode :Whether to deploy your driver on the worker nodes (cluster) or locally as an external client (client) (default: client) ,有两个参数,master 和 client,Driver运行的地方,如果选择client,其日志会打印在终端界面。要注意的是,如果设置这个参数,那么需要同时指定上面 master 为 yarn。

queue:提交的任务队列

K-means介绍

很经典的基于距离的聚类算法,首先,我们需要先预测类簇的个数,也就是K的值,然后基于这K个中心点,将所有的点根据距离的远近进行划分,然后对每一个类簇重新计算其质心,然后重新聚类,迭代此过程直到聚类完成。由于它是一个不停的迭代的过程,所以当数据量大的时候还是很适合Spark来处理的。

代码如下:

#!/bin/lib/python
 
from __future__ import print_function
 
from numpy import array
from math import sqrt
 
from pyspark import SparkContext
from pyspark.mllib.clustering import KMeans, KMeansModel
 
 
if __name__ == "__main__":
    sc = SparkContext(appName="FaceKMeansTest")  # SparkContext
 
    # Load and parse the data
    data = sc.textFile("hdfs://yz-cpu-vm001.hogpu.cc:8020/user/zhizhong.su/face_fea/feas.txt")
    parsedData = data.map(lambda line: array([float(x) for x in line.split(' ')]))
    #print data
 
    # Build the model (cluster the data)
    clusters = KMeans.train(parsedData, 2000, maxIteratiOns=10, initializatiOnMode="random")
 
    # Evaluate clustering by computing Within Set Sum of Squared Errors
    def error(point):
        center = clusters.centers[clusters.predict(point)]
        return sqrt(sum([x**2 for x in (point - center)]))
 
 
    WSSSE = parsedData.map(lambda point: error(point)).reduce(lambda x, y: x + y)
    print("Within Set Sum of Squared Error = " + str(WSSSE))
 
    # Save and load model
    #clusters.save(sc, "target/org/apache/spark/PythonKMeansExample/KMeansModel")
    #sameModel = KMeansModel.load(sc, "target/org/apache/spark/PythonKMeansExample/KMeansModel")
    # $example off$
 
    sc.stop()

提交任务的指令同上。

 

注:kill job的指令为:yarn application –kill applicationID




推荐阅读
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • Hyperledger Fabric 1.4 节点 SDK 快速入门指南
    本文将详细介绍如何利用 Hyperledger Fabric 1.4 的 Node.js SDK 开发应用程序。通过最新版本的 Fabric Node.js SDK,开发者可以更高效地构建和部署基于区块链的应用,实现数据的安全共享和交易处理。文章将涵盖环境配置、SDK 安装、示例代码以及常见问题的解决方法,帮助读者快速上手并掌握核心功能。 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • 本文介绍了如何在 Vue 3 组合 API 中正确设置 setup() 函数的 TypeScript 类型,以避免隐式 any 类型的问题。 ... [详细]
  • Spark与HBase结合处理大规模流量数据结构设计
    本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 在序章二中,我们了解到Bingo是一位重度强迫症患者,对细节有着极致的追求。他不仅能在深夜专注编程,还能在假期留校进行项目布局,甚至会在凌晨骑行上山观赏日出,与朋友一同畅游钱塘江。他的性格豪爽大方,乐于与他人分享自己的经验和心得,撰写了一本名为《从零开始》的著作。 ... [详细]
author-avatar
土豆小妈姐_645
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有