Spark框架——WordCount案例实现
package wordcount import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext} object Spark01_WordCount {
def main(args: Array[String]): Unit = {
//TODO 建立与spark的连接
val sparConf = new SparkConf().setMaster("local").setAppName("WordCount") //基本配置
val sc = new SparkContext(sparConf) //TODO 执行业务操作
//1.读取文件,获取一行一行的数据
val lines: RDD[String] = sc.textFile("datas/1.txt") //2.将一行数据进行拆分,形成一个一个的单词
// 扁平化:将整体拆分成个体
// "hello world,hello world" => hello,world,hello,world
val words: RDD[String] = lines.flatMap(_.split(" ")) //3.将数据根据单词进行分组,便于统计
// "(hello,hello),(world,world)
val wordGroup: RDD[(String, Iterable[String])] = words.groupBy(word => word) //4.对分组后的数据进行转换
// "(hello,hello),(world,world) => (hello,2),(world,2)
val wordToCount = wordGroup.map {
case (word,list) => {
(word,list.size)
}
} //5.将转换结果采集到控制台打印出来
val array: Array[(String, Int)] = wordToCount.collect()
array.foreach(println) //TODO 关闭spark连接
sc.stop()
}
}
方式二
package wordcount import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext} object Spark02_WordCount {
def main(args: Array[String]): Unit = {
//TODO 本地建立与spark的连接
val sparConf = new SparkConf().setMaster("local").setAppName("WordCount")
val sc = new SparkContext(sparConf) //spark实例 //TODO 执行业务操作
//1.读取文件,获取一行一行的数据,按行读取
val lines: RDD[String] = sc.textFile("datas/1.txt") //2.将一行数据进行拆分,形成一个一个的单词
val words: RDD[String] = lines.flatMap(_.split(" ")) val wordToOne = words.map(
word => (word,1)
)
val wordGroup: RDD[(String, Iterable[(String, Int)])] = wordToOne.groupBy(
t => t._1
) val wordToCount = wordGroup.map {
case (word,list) => {
list.reduce(
(t1, t2) => {
(t1._1, t1._2 + t2._2)
}
)
}
} //5.将转换结果采集到控制台打印出来
val array: Array[(String, Int)] = wordToCount.collect()
array.foreach(println) //TODO 关闭spark连接
sc.stop()
}
}
方式三
package wordcount import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext} object Spark03_WordCount {
def main(args: Array[String]): Unit = {
//TODO 本地建立与spark的连接
val sparConf = new SparkConf().setMaster("local").setAppName("WordCount")
val sc = new SparkContext(sparConf) //spark实例 //TODO 执行业务操作
//1.读取文件,获取一行一行的数据,按行读取
val lines: RDD[String] = sc.textFile("datas/1.txt") //2.将一行数据进行拆分,形成一个一个的单词
val words: RDD[String] = lines.flatMap(_.split(" ")) val wordToOne = words.map(
word => (word,1)
)
//spark框架提供了更多功能,可以将分组和聚合使用一个方法实现
//reduceByKey:相同的key数据,可以对value进行reduce聚合
val wordToCount = wordToOne.reduceByKey(_+_) //5.将转换结果采集到控制台打印出来
val array: Array[(String, Int)] = wordToCount.collect()
array.foreach(println) //TODO 关闭spark连接
sc.stop()
}
}
运行截图:

Spark框架——WordCount案例实现的更多相关文章
- 大数据学习day18----第三阶段spark01--------0.前言(分布式运算框架的核心思想,MR与Spark的比较,spark可以怎么运行,spark提交到spark集群的方式)1. spark(standalone模式)的安装 2. Spark各个角色的功能 3.SparkShell的使用,spark编程入门(wordcount案例)
0.前言 0.1 分布式运算框架的核心思想(此处以MR运行在yarn上为例) 提交job时,resourcemanager(图中写成了master)会根据数据的量以及工作的复杂度,解析工作量,从而 ...
- Spark Streaming updateStateByKey案例实战和内幕源码解密
本节课程主要分二个部分: 一.Spark Streaming updateStateByKey案例实战二.Spark Streaming updateStateByKey源码解密 第一部分: upda ...
- .Net for Spark 实现 WordCount 应用及调试入坑详解
.Net for Spark 实现WordCount应用及调试入坑详解 1. 概述 iNeuOS云端操作系统现在具备物联网.视图业务建模.机器学习的功能,但是缺少一个计算平台产品.最近在调研使用 ...
- 3. scala-spark wordCount 案例
1. 创建maven 工程 2. 相关依赖和插件 <dependencies> <dependency> <groupId>org.apache.spark< ...
- ENode框架Conference案例分析系列之 - 文章索引
ENode框架Conference案例分析系列之 - 业务简介 ENode框架Conference案例分析系列之 - 上下文划分和领域建模 ENode框架Conference案例分析系列之 - 架构设 ...
- Spark Streaming揭秘 Day9 从Receiver的设计到Spark框架的扩展
Spark Streaming揭秘 Day9 从Receiver的设计到Spark框架的扩展 Receiver是SparkStreaming的输入数据来源,从对Receiver整个生命周期的设计,我们 ...
- [转] 用SBT编译Spark的WordCount程序
问题导读: 1.什么是sbt? 2.sbt项目环境如何建立? 3.如何使用sbt编译打包scala? [sbt介绍 sbt是一个代码编译工具,是scala界的mvn,可以编译scala,java等,需 ...
- ENode框架Conference案例转载
ENode框架Conference案例分析系列之 - Quick Start 前言 前一篇文章介绍了Conference案例的架构设计,本篇文章开始介绍Conference案例的代码实现.由于代码比较 ...
- 【iOS】7.4 定位服务->2.1.4 定位 - 官方框架CoreLocation 案例:指南针效果
本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...
随机推荐
- ios audio不能够正常播放
ios中audio不能直接通过audio.play()播放,需要用户在click事件或者touch事件中执行audio.play()才能播放. ajax回调中audio.play()音乐不能正常播放. ...
- ES6-11学习笔记--函数的参数
参数的默认值 与解构赋值结合 length属性 作用域 函数的name属性 ES5设置函数参数默认值: function foo(x, y) { y = y || 'world'; console ...
- java中如何创建自定义异常Create Custom Exception
9.创建自定义异常 Create Custom Exception 马克-to-win:我们可以创建自己的异常:checked或unchecked异常都可以, 规则如前面我们所介绍,反正如果是chec ...
- 爬虫---scrapy分布式和增量式
分布式 概念: 需要搭建一个分布式的机群, 然后在每一台电脑中执行同一组程序, 让其对某一网站的数据进行联合分布爬取. 原生的scrapy框架不能实现分布式的原因 调度器不能被共享, 管道也不能被共享 ...
- Hash-题解-方法
有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = "nagar ...
- SimpleDateFormat类的安全问题,这6个方案总有一个适合你
摘要:你使用的SimpleDateFormat类还安全吗?为什么说SimpleDateFormat类不是线程安全的?带着问题从本文中寻求答案. 本文分享自华为云社区<[高并发]SimpleDat ...
- javaWeb代码整理01-mysql
jar包: maven坐标: <dependency> <groupId>mysql</groupId> <artifactId>mysql-conne ...
- Apache Doris ODBC外表之Postgresql使用指南
Apache Doris 社区 2022 年的总体规划,包括待开展或已开展.以及已完成但需要持续优化的功能.文档.社区建设等多方面,我们期待有更多的小伙伴参与进来讨论.同时也希望多多关注Doris,给 ...
- golang /js index 转换excel字母表头
Golang 1 package main 2 3 import "fmt" 4 5 func main() { 6 var Letters = []string{"A& ...
- 解析数仓OLAP函数:ROLLUP、CUBE、GROUPING SETS
摘要:GaussDB(DWS) ROLLUP,CUBE,GROUPING SETS等OLAP函数的原理解析. 本文分享自华为云社区<GaussDB(DWS) OLAP函数浅析>,作者: D ...