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 设备工具 === ...
随机推荐
- USB2.0接口EMC设计标准电路
- .map() vs .forEach() vs for() 如何选择?
访问原文地址 .map() vs .forEach() vs for() 笔者说,自己基本没怎么用过for()来遍历,主要是用.forEach(). 但是总是会被很多朋友说,这些人认为for()的速度 ...
- ajax遍历list数据解决方法
在使用ajax遍历后台传来的list的时,总是遍历不出来,明明在控制台可以打印出来,但就是遍历不出来 之后发现是忘了加一个 dataType: "json" 导致遍历不出来
- SQL语句总结---数据库操作
https://blog.csdn.net/hallomrzhang/article/details/85010014 数据库操作 查看所有数据库 show databases; 1 查看当前使用的数 ...
- 虚拟机上 安装 CentoOS 7.5 1804 过程记录
1.准备安装镜像 在开始安装CentOS之前,必须下载安装ISO映像.镜像可从CentOS网站https://www.centos.org/download/.提供以下基本类型的镜像: DVD ISO ...
- flex布局图片和文字同级,文字过多导致图片变形问题
图片增加css样式即可 flex-grow: 0;flex-shrink: 0;
- Linux上部署net6应用
前言 .net6都出来了,作为一名.net搬砖工却一直都在windows下部署应用,还未尝试过linux环境下部署应用.参考福禄网络研发团队的相关博客,学习一下如何将应用部署到linux系统. . ...
- Docker操作容器2
Docker操作容器1:https://blog.csdn.net/Kevinnsm/article/details/ 1.如何更改docker容器中的配置文件(如nginx容器中的nginx.con ...
- java实现MD5文件加密
package me.zhengjie.modules.logdump.util; import java.io.FileInputStream; import java.io.IOException ...
- Go xmas2020 学习笔记 12、Structs, Struct tags & JSON
12-Structs, Struct tags & JSON. Struct. Struct Gotcha. Anonymous Struct Type. Make the zero valu ...