文档章节

scala编写wordCount

 不羁之后
发布于 2017/02/09 10:12
字数 234
阅读 36
收藏 0

val lines = List("hello tom hello jerry", "hello jerry", "hello kitty")

第一种:
lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).mapValues(_.foldLeft(0)(_+_._2))

第二种:
lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).map(t=>(t._1, t._2.size)).toList.sortBy(_._2).reverse

分步说明:

1:lines.flatMap(_.split(" "))

    ------将lines压平处理成单个单词------

   结果: res16: List[String] = List(hello, tom, hello, jerry, hello, jerry, hello, kitty)

2:lines.flatMap(_.split(" ")).map((_, 1))

------分解成元组(word,1) -----

  结果:res17: List[(String, Int)] = List((hello,1), (tom,1), (hello,1), (jerry,1), (hello,1), (jerry,1), (hello,1), (kitty,1))

3:lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1)

------按单词分组 -----

  结果:res18: scala.collection.immutable.Map[String,List[(String, Int)]] = Map(tom -> List((tom,1)), kitty -> List((kitty,1)), jerry -> List((jerry,1), (jerry,1)), hello -> List((hello,1), (hello,1), (hello,1), (hello,1)))

4:lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).mapValues(_.foldLeft(0)(_+_._2))

------取出map的value值,叠加。。

    mapValues(_.foldLeft(0)(_+_._2)) 说明:第一个下划线是List((jerry,1), (jerry,1)) -----

                                                                  第二个下划线是foldLeft累加后的结果-----

                                                                  第三个下划线是 (jerry,1) -----

      结果:   res19: scala.collection.immutable.Map[String,Int] = Map(tom -> 1, kitty -> 1, jerry -> 2, hello -> 4)

                                                   

© 著作权归作者所有

粉丝 2
博文 39
码字总数 24680
作品 0
成都
私信 提问
Intellij-idea工具开发spark常见问题解决备案

IntelliJ IDEA开发Spark1.4.0环境部署 1:IDEA的安装 官网jetbrains.com下载IntelliJ IDEA,有Community Editions 和& Ultimate Editions,前者免费,用户可以选择合适的版本使用。 根据安装...

ericSM
2016/05/26
148
0
4.Spark Streaming:实时wordcount程序开发

1、安装nc工具:yum install nc,然后运行nc -lk 9999 2、开发实时wordcount程序 java版本 package cn.spark.study.streaming; import java.util.Arrays; import org.apache.spark.SparkConf......

weixin_32265569
2017/11/16
0
0
7.Spark Streaming:输入DStream之基础数据源以及基于HDFS的实时wordcount程序

输入DStream之基础数据源 HDFS文件 基于HDFS文件的实时计算,其实就是,监控一个HDFS目录,只要其中有新文件出现,就实时处理。相当于处理实时的文件流。 streamingContext.fileStream(data...

weixin_32265569
2017/11/16
0
0
sbt 编译spark 的wordcount 程序

直接执行 sbt 会在当前目录下面创建 target 目录 sbt 的目录格局一般为 lib/ (该目录下存储与编译相关的 jar 文件) 复制 jar 文件 spark-assembly *hadoop2.5.1.jar 到 lib 目录下 编辑 word...

MtrS
2015/01/05
1K
0
Spark基本工作原理与RDD及wordcount程序实例和原理深度剖析

RDD以及其特点 1、RDD是Spark提供的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式数据集。 2、RDD在抽象上来说是一种元素集合,包含了数据。它是被分区的,分为多个分区,每...

qq1137623160
2018/05/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PCB设计-Allegro软件入门系列-铺铜操作(下)

铺铜是PCB很常见的操作,PCB的敷铜一般都是覆地铜,增大地线面积,有利于地线阻抗降低,使电源和信号传输稳定,在高频的信号线附近敷铜,可大大减少电磁辐射干扰,起屏蔽作用。 本讲讲解啊一...

demyar
15分钟前
2
0
如何通过WASI SDK 在Linux上编译ZXing C++

Mozilla在今年三月份的时候公布了WASI。WASI的目标就是让WebAssembly在任何地方都可以运行,而不仅仅像现在这样只能运行在Node.js和Web浏览器中。WASI目前依然处于初级阶段,这篇文章分享下如...

yushulx
17分钟前
2
0
.Net界面开发神器—DevExpress官方汉化包免费下载!还在等什么?

点击获取DevExpress v19.1.7新版试用下载 DevExpress Localization Service允许您创建一组自定义的附属程序集,要将语言包添加到程序集中,请查看本文中为大家列出的对应版本的汉化包,下载并...

FILA6666
17分钟前
2
0
php生成二维码

        header('Content-Type: image/png');        //清除缓冲区,防止之前面不知道的情况下被加头部信息导致不显示图片内容        ob_clean();        $...

横着走的螃蟹
23分钟前
2
0
伪类和伪元素

伪类和伪元素 伪类和伪元素,对于绝大多数同学来说,都是耳熟能详的名字,但确实又有很多人搞不清楚它们之间的区别,以致于混淆概念。而当概念都混淆的时候,也往往意味着你不会经常使用它,...

不负好时光
25分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部