当前位置: 首页 > article >正文

【Spark分布式内存计算框架——Spark 基础环境】3. 快速入门(下)案例:词频统计、 运行圆周率

词频统计WordCount

大数据框架经典案例:词频统计WordCount,从文件读取数据,统计单词个数。
在这里插入图片描述
MapReduce WordCount
首先回顾一下MapReduce框架如何实现,流程如下图所示:
在这里插入图片描述
第一步、Map阶段:读取文件数据,分割为单词,出现次数为1
在这里插入图片描述
第二步、Reduce阶段:对map阶段输出的数据分组聚合,将相同Key的Value放在一起,聚合每个单词出现的总次数。
在这里插入图片描述
Spark WordCount
使用Spark编程实现,分为三个步骤:

  • 第一步、从HDFS读取文件数据,sc.textFile方法,将数据封装到RDD中

  • 第二步、调用RDD中高阶函数,进行处理转换处理,函数:flapMap、map和reduceByKey

  • 第三步、将最终处理结果RDD保存到HDFS或打印控制台
    首先回顾一下Scala集合类中高阶函数flatMap与map函数区别,
    map函数:会对每一条输入进行指定的func操作,然后为每一条输入返回一个对象;
    flatMap函数:先映射后扁平化;
    在这里插入图片描述
    Scala中reduce函数使用案例如下:
    在这里插入图片描述
    在Spark数据结构RDD中reduceByKey函数,相当于MapReduce中shuffle和reduce函数合在一起:按照Key分组,将相同Value放在迭代器中,再使用reduce函数对迭代器中数据聚合。
    在这里插入图片描述

编程实现
准备数据文件:wordcount.data,内容如下,上传HDFS目录【/datas/】

## 创建文件
vim wordcount.data
## 内容如下
spark spark hive hive spark hive 
hadoop sprk spark
## 上传HDFS
hdfs dfs -put wordcount.data /datas/

编写代码进行词频统计:

## 读取HDFS文本数据,封装到RDD集合中,文本中每条数据就是集合中每条数据
val inputRDD = sc.textFile("/datas/wordcount.data")
## 将集合中每条数据按照分隔符分割,使用正则:https://www.runoob.com/regexp/regexp-syntax.html
val wordsRDD = inputRDD.flatMap(line => line.split("\\s+"))
## 转换为二元组,表示每个单词出现一次
val tuplesRDD = wordsRDD.map(word => (word, 1))
# 按照Key分组,对Value进行聚合操作, scala中二元组就是Java中Key/Value对
## reduceByKey:先分组,再聚合
val wordcountsRDD = tuplesRDD.reduceByKey((tmp, item) => tmp + item)
## 查看结果
wordcountsRDD.take(5)
## 保存结果数据到HDFs中
wordcountsRDD.saveAsTextFile("/datas/spark-wc")
## 查结果数据
hdfs dfs -text /datas/spark-wc/par*

截图如下:
在这里插入图片描述
查看保存结果:
在这里插入图片描述
监控页面
每个Spark Application应用运行时,启动WEB UI监控页面,默认端口号为4040,使用浏览器打开页面,如下:
在这里插入图片描述
点击【Job 0】,进入到此Job调度界面,通过DAG图展示,具体含义后续再讲。
在这里插入图片描述
大多数现有的集群计算系统都是基于非循环的数据流模型。即从稳定的物理存储(如分布式文件系统)中加载记录,记录被传入由一组确定性操作构成的 DAG(Directed AcyclicGraph,有向无环图),然后写回稳定存储。 DAG 数据流图能够在运行时自动实现任务调度和故障恢复。

运行圆周率

Spark框架自带的案例Example中涵盖圆周率PI计算程序,可以使用【$SPARK_HOME/bin/spark-submit】提交应用执行,运行在本地模式。

  • 自带案例jar包:【/export/server/spark/examples/jars/spark-examples_2.11-2.4.5.jar】
    在这里插入图片描述

  • 提交运行PI程序

SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit
–master local[2]
–class org.apache.spark.examples.SparkPi
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.5.jar
10

在这里插入图片描述

扩展:圆周率计算方式,采用蒙特卡洛算法
在这里插入图片描述
1)、在一个正方形中, 内切出一个圆形
在这里插入图片描述
2)、随机向正方形内均匀投 n 个点, 其落入内切圆内的内外点的概率满足如下
在这里插入图片描述

以上就是蒙特卡洛的大致理论, 通过这个蒙特卡洛, 便可以通过迭代循环投点的方式实现蒙特
卡洛算法求圆周率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/391992.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章:

【Spark分布式内存计算框架——Spark 基础环境】3. 快速入门(下)案例:词频统计、 运行圆周率

词频统计WordCount 大数据框架经典案例:词频统计WordCount,从文件读取数据,统计单词个数。 MapReduce WordCount 首先回顾一下MapReduce框架如何实现,流程如下图所示: 第一步、Map阶段:读取文件数据&…...

Python issubclass和isinstance函数:检查类型

Python 提供了如下两个函数来检查类型:issubclass(cls, class_or_tuple):检查 cls 是否为后一个类或元组包含的多个类中任意类的子类。isinstance(obj, class_or_tuple):检查 obj 是否为后一个类或元组包含的多个类中任意类的对象。通过使用上…...

仲裁期间投的简历竟被转发给原公司,原公司HR给我发截图,并转达老板威胁:老板行业圈子广,仲裁公司,以后投简历都是这个下场!...

论某些公司能有多恶心?下面是一位网友的遭遇:仲裁期间投的简历竟然被原公司HR发给自己截图,看来是投递简历的公司又转给了原公司,还转达老板原话威胁他:老板行业圈子广,仲裁公司,以后投的简历都…...

社会,经济的1000+篇文章总结

社会,经济的1000篇文章总结 本文收集和总结了有关社会,经济的1000篇文章,由于篇幅有限只能总结近期的内容,想了解更多内容可以访问:http://www.ai2news.com/, 其分享了有关AI的论文、文章、图书。 query 门槛模型与集体行为 https://www.ai…...

Git:查看提交信息

git loggit log,查看所有loggit log file,只查看指定file的loggit log -p file,查看指定文件的带有文件修改列表的loggit log --oneline,将每个log信息精简后显示在一行git log --stat,显示log时将每次提交所修改的文件…...

JAVA练习40

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-回文链表 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 2月4日练习内…...

2022-02广州调研

沟通技巧管理团队 咨询方向:准备,技能,应变,技巧 基础行为和气势上,变现的要放松和专业。目的是为了调研真实的需求。那么根据这个目的,就需要自己来主导整个过程。一是要计划好方向,二是实际…...

博客停更,再见CSDN。

离开CSDN也是很久之前就有的想法,只是之前一直呆在舒适区内,现在想要动动了。 CSDN在我还是大二(2015年)的时候就加入了,主要都是搜索解决一些简单bug。 到后来工作后,开始搜索一些服务器部署、第三方类库…...

现场直播计分识别软件Crack:Scoreboard OCR

Scoreboard OCR 识别物理记分牌中的数字并将它们发送到您的图形引擎。 您需要一台带摄像头的 Windows 笔记本电脑(也可以使用现有的现场制作电脑) 特征 识别任何运动的任何数字(比赛时钟、得分、犯规、点球、进攻时钟等) 使用捕获…...

算法分析

目录 一:算法的时间复杂度分析 事后分析估算方法: 事前分析估算方法: 需求: 计算1到100的和。 需求: 计算100个1100个2100个3...100个100的结果 1.函数渐近增长 测试一: 二:算法时间复杂度 1.大…...

硬件常识_串口相关

文章目录一、前言二、学习串口DB9RS232RS485USB三、总结一、前言 作为一只厂狗,经常听到一些词,“RS232”、“RS485”、“串口”、“DB9”… 在我眼里,一律是这个玩意儿, 为什么会产生这种(错误的)认识呢&…...

[Daimayuan]循环子串(C++,字符串)

题目描述 一个字符串SSS是另一字符串TTT的循环子串当且仅当存在kkk, TTT所有字符循环右移kkk位后得到的新串T′T′T′,满足SSS是T′T′T′的子串。 例如: abc 是 cefab的循环子串。 (cefab循环右移222位得到abcef, abc是abcef的子串) 一个串PPP是完全循环串当且仅…...

题目:1.两数之和

题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺…...

数据挖掘(2.4)--数据归约和变换

目录 1.数据归约 1.1数据立方体聚合 1.2特征选择 1.3数据压缩 1.4其他数据归约方法 回归分析 直方图 聚类 简单随机采样(SAS) 2.数据离散化 2.1基于信息增益的离散化 2.2基于卡方检验的离散化 2.3基于自然分区的离散化 3.概念层次生成 1.数…...

26、ADS使用记录之基于低通滤波匹配的超宽带功率放大器设计

26、ADS使用记录之基于低通滤波匹配的超宽带功率放大器设计 低通滤波器匹配网络其实就是在滤波的基础上增加了一个阻抗变换的作用,其设计参数包含阻抗变换比、设计带宽参数等等,因为其良好的匹配特性所以经常使用在功率放大器的设计之中。如MTT文章&…...

改造vue-element-plus-admin,打通前后端

目标 整合vue-element-plus-admin前端框架,作为开发平台的前端。 准备工作 前端选用vue-element-plus-admin,地址 https://gitee.com/kailong110120130/vue-element-plus-admin。 首先clone项目,然后整合到开发平台中去。这是一个独立的前…...

全志V85x开源硬件PCB方案汇总(内附PCB文件获取链接~)

1、V853-智能交互摄像头开发板 该参赛作品基于全志V853开发板制作的一款类似眼镜外挂的小产品,可以对场景进行辅助识别,并通过云端交互实现物联网控制,进一步实现物联网与人机交互的融合。 开发板配置了摄像头和小屏幕接口,并外…...

使用Python从邮件中下载附件和提取元数据

在本篇博客中,我们将解析一段Python代码,该代码可以从电子邮件中下载附件并提取发送人、主题和日期等元数据。 这段代码包含两个函数:download_file 和 get_email_title。其中,download_file 函数用于将附件保存到指定路径&#…...

分享我通过 API 赚钱的思路

写在最前 我们经常看到非常多的 API 推荐,但又经常收藏到收藏夹里吃灰,仿佛收藏了就是用了。 很多时候没有用起来,可能是因为想不到某类 API 可以用来做什么或者能应用在哪里。 下面我将我思考的一些方向给到大家,希望我们都能…...

从源码全面解析 synchronized 关键字的来龙去脉

👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主📕系列专栏:Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙…...