spark (二) spark wordCount示例
实现思路

实现1: scala 基本集合操作方式获取结果
package com.lzw.bigdata.spark.core.wordcount
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object Spark01_WordCount {
def main(args: Array[String]): Unit = {
// Spark框架步骤
// 1. 建立和Spark框架的链接
val sparkConfig: SparkConf = new SparkConf()
.setMaster("local")
.setAppName("WordCount")
val ctx = new SparkContext(sparkConfig)
// 2. 执行业务逻辑
// 2.1 读取文件,获取一行一行的数据
val lines: RDD[String] = ctx.textFile("data")
lines.foreach(println)
// 2.2 分词,此处按照空格spilt
val words: RDD[String] = lines.flatMap(line => line.split(" "))
words.foreach(println)
val wordGroup: RDD[(String, Iterable[String])] = words.groupBy(word => word)
val x = 1
// 2.3 将数据根据单词进行分组,便于统计
val wordToCount: RDD[(String, Int)] = wordGroup.map({
case (word, list) => (word, list.size)
})
val tuples: Array[(String, Int)] = wordToCount.collect()
// 2.4 打印结果
tuples.foreach(println)
// 3. 关闭连接
ctx.stop()
}
}
实现2: scala map reduce方式获取结果
package com.lzw.bigdata.spark.core.wordcount
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object Spark02_WordCount {
def main(args: Array[String]): Unit = {
// Spark框架步骤
// 1. 建立和Spark框架的链接
val sparkConfig: SparkConf = new SparkConf()
.setMaster("local")
.setAppName("WordCount")
val ctx = new SparkContext(sparkConfig)
// 2. 执行业务逻辑
// 2.1 读取文件,获取一行一行的数据
val lines: RDD[String] = ctx.textFile("data")
// lines.foreach(println)
// 2.2 分词,此处按照空格spilt
val words: RDD[String] = lines.flatMap(line => line.split(" "))
val wordToOne: RDD[(String, Int)] = words.map(word => (word, 1))
// 分组
val wordGroup: RDD[(String, Iterable[(String, Int)])] = wordToOne.groupBy(t => t._1)
// 聚合
val tuple: RDD[(String, Int)] = wordGroup.map({
case (word, list) => list.reduce((t1, t2) => (t1._1, t1._2 + t2._2))
})
tuple.foreach(println)
// 3. 关闭连接
ctx.stop()
}
}
实现3: spark 提供的map reduce方式获取结果
package com.lzw.bigdata.spark.core.wordcount
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object Spark03_WordCount {
def main(args: Array[String]): Unit = {
// Spark框架步骤
// 1. 建立和Spark框架的链接
val sparkConfig: SparkConf = new SparkConf()
.setMaster("local")
.setAppName("WordCount")
val ctx = new SparkContext(sparkConfig)
// 2. 执行业务逻辑
// 2.1 读取文件,获取一行一行的数据
val lines: RDD[String] = ctx.textFile("data")
// lines.foreach(println)
// 2.2 分词,此处按照空格spilt
val words: RDD[String] = lines.flatMap(line => line.split(" "))
val wordToOne: RDD[(String, Int)] = words.map(word => (word, 1))
// Spark框架提供了更多的功能,可以将分组和聚合使用一个方法实现
// 相同的key会对value做reduce
val tuple: RDD[(String, Int)] = wordToOne.reduceByKey((t1, t2) => t1 + t2)
tuple.foreach(println)
// 3. 关闭连接
ctx.stop()
}
}
FAQ:
Q: 初步运行spark错误

A: JDK版本问题, 切换jdk到1.8就可以了
spark (二) spark wordCount示例的更多相关文章
- hadoop学习第三天-MapReduce介绍&&WordCount示例&&倒排索引示例
一.MapReduce介绍 (最好以下面的两个示例来理解原理) 1. MapReduce的基本思想 Map-reduce的思想就是“分而治之” Map Mapper负责“分”,即把复杂的任务分解为若干 ...
- Spark练习之wordcount,基于排序机制的wordcount
Spark练习之wordcount 一.原理及其剖析 二.pom.xml 三.使用Java进行spark的wordcount练习 四.使用scala进行spark的wordcount练习 五.基于排序 ...
- Spark metrics on wordcount example
I read the section Metrics on spark website. I wish to try it on the wordcount example, I can't make ...
- openfire spark 二次 开发 服务插件
==================== 废话 begin ============================ 最近老大让我为研发平台增加即时通讯功能.告诉我用comet 在web端实现即 ...
- PC结束 Spark 二次开发 收到自己主动,并允许好友请求
本次Spark二次开发是为了客服模块的开发, 能让用户一旦点击该客服则直接自己主动加入好友.而客服放则需自己主动加入好友,不同弹出对话框进行允许,这方便的广大客服. 如今废话不多说,直接上代码. pa ...
- Spark:使用Spark Shell的两个示例
Spark:使用Spark Shell的两个示例 Python 行数统计 ** 注意: **使用的是Hadoop的HDFS作为持久层,需要先配置Hadoop 命令行代码 # pyspark >& ...
- Spark初步 从wordcount开始
Spark初步-从wordcount开始 spark中自带的example,有一个wordcount例子,我们逐步分析wordcount代码,开始我们的spark之旅. 准备工作 把README.md ...
- 运行spark官方的graphx 示例 ComprehensiveExample.scala报错解决
运行spark官方的graphx 示例 ComprehensiveExample.scala报错解决 在Idea中,直接运行ComprehensiveExample.scala,报需要指定master ...
- Spark安装和简单示例
spark的安装 先到官网下载安装包 注意第二项要选择和自己hadoop版本相匹配的spark版本,然后在第4项点击下载.若无图形界面,可用windows系统下载完成后传送到centos中. 本例中安 ...
- 配置spark历史服务(spark二)
1. 编辑spark-defaults.conf位置文件 添加spark.eventLog.enabled和spark.eventLog.dir的配置修改spark.eventLog.dir为我们之前 ...
随机推荐
- 一些常用的jQuery方法1_20220128
1.jQuery.merge()方法 $.merge() 函数用于合并两个数组内容到第一个数组.*$*.merge( first, second ) $(function () { var arr = ...
- mysql 备份还原命令备忘
1.备份 mysqldump -u username -p databasename tableName > backupfile.sql 2.还原 mysql -u username -p p ...
- [Linux]学习之路---树梅派4B出现打开文件管理器闪退等问题
直接控制台运行命令: sudo apt-get install --reinstall pcmanfm 后面的pcmanfm,是一个功能齐全的Linux上的轻量级文件管理器,我自己的记忆方法就是: P ...
- rce临时文件上传[RCE1]P8
rce临时文件上传[RCE1]P8 /[A-Za-z0-9!~^|&]+/i 匹配了我能想到的所有绕过方法,想到临时文件上传,是否可以执行/tmp/?????????这个文件呢 /tmp/?? ...
- 流程编排LiteFlow-业务代码解耦
LiteFlow真的是相见恨晚啊,之前做过的很多系统,都会用各种if else,switch这些来解决不同业务方提出的问题,有时候还要"切一个分支"来搞这些额外的事情,把代码搞得一 ...
- 定制jekins-slave-jnlp镜像封装docker和kebectl命令实现pipline
基于官方:jenkins/inbound-agent:latest DockerHub成品: docker pull svipghy/jenkins-jnlp-slave:v1 Dockerfile ...
- 关闭 Chrome 浏览器 更新错误 弹窗
1 Chrome使用一段时间后,右上角总会弹出弹窗,并且影响鼠标聚焦,如下图: 2 解决方式: 右键点击 桌面Chrome图表,然后点击属性,按照下图操作: 在 快捷方式--目标 后输入: --di ...
- Vulhub Nginx漏洞复现
目录 前言 文件名逻辑漏洞(CVE-2013-4547) 配置不当导致解析漏洞 配置错误导致漏洞 CRLF注入漏洞 目录穿越漏洞 前言 Nginx是一款广泛使用的Web服务器和反向代理服务器,尽管它以 ...
- Centos7下的开机自启动
记录服务器每次重启之后启动一些服务. systemd systemd简介 CentOS7已不再使用chkconfig管理启动项,而是使用systemd.关于systemd的衍生和发展,可以参见< ...
- JDBC【4】-- SPI底层原理解析
前面已经讲过SPI的基本实现原理了,demo也基本实现了,再来说说SPI. http://aphysia.cn/archives/jdbcspi 背景:SPI是什么? SPI,即是Service Pr ...