本章节实现一个真正得wordcount 得spark程序。

一、从本地获得一个数据集

val speechRdd= sc.parallelize(scala.io.Source.fromFile("/home/hdfs/Data/WordCount/speech").getLines.toList)

二、把每一样变成多行

val wordMap=speechRdd.flatMap(line=>{
line.split(" ")
})

三、去掉特殊字符,并取消大小写区别
val wordCount=wordMap.map(word=>{
val w=word.replaceAll("[,.?!:;]"," ").toLowerCase.trim
(w,1)
})

四、写reduce函数
val wordReduce=wordCount.reduceByKey((sum,current)=>{sum+current})

这里也可以不写reducebykey函数,而是直接对wordcount这个rdd做countByKey

scala> wordCount.countByKey
res2: scala.collection.Map[String,Long] = Map(krishna -> 1, beneath -> 1, opinions -> 1, beautiful -> 2, sunday -> 1, devastating -> 1, drown -> 1, cells -> 2, down -> 3, savings -> 1, heaviness -> 1, application -> 1, interesting -> 1, 7 30 -> 1, "" -> 27, desktop -> 1, read -> 1, papers -> 1, failure -> 2, mother -> 3, for -> 17, biopsy -> 1, find -> 4, school -> 1, directors -> 1, coke -> 1, people -> 1, begin -> 2, any -> 2, website -> 1, ?.tay -> 1, mac -> 3, decisions -> 1, across -> 1, gradually -> 1, years -> 9, i?. -> 3, young -> 2, talented -> 1, doctor?. -> 1, this -> 11, death -> 6, curable -> 1, in -> 34, subtle -> 1, remarkable -> 1, myself -> 2, have -> 17, learned -> 1, needed -> 1, your -> 16, ?.f -> 2, off -> 1, ?.f -> 1, fonts -> 1, offered -> 1, bottles -> 1, are -> ...
scala>

是一个map类型,不再是一个rdd类型。

wordReduce.take(20).foreach(println)

大数据入门到精通9-真正得wordcount的更多相关文章

  1. 大数据入门到精通2--spark rdd 获得数据的三种方法

    通过hdfs或者spark用户登录操作系统,执行spark-shell spark-shell 也可以带参数,这样就覆盖了默认得参数 spark-shell --master yarn --num-e ...

  2. 大数据入门到精通19--mysql 数据导入到hive数据中

    一.正常按照数据库和表导入 \\前面介绍了通过底层文件得形式导入到hive的表中,或者直接导入到hdfs中,\\现在介绍通过hive的database和table命令来从上层操作.sqoop impo ...

  3. 大数据入门到精通18--sqoop 导入关系库到hdfs中和hive表中

    一,选择数据库,这里使用标准mysql sakila数据库 mysql -u root -D sakila -p 二.首先尝试把表中的数据导入到hdfs文件中,这样后续就可以使用spark来dataf ...

  4. 大数据入门到精通16--hive 的条件语句和聚合函数

    一.条件表达 case when ... then when .... then ... when ... then ...end select film_id,rpad(title,20," ...

  5. 大数据入门到精通13--为后续和MySQL数据库准备

    We will be using the sakila database extensively inside the rest of the course and it would be great ...

  6. 大数据入门到精通12--spark dataframe 注册成hive 的临时表

    一.获得最初的数据并形成dataframe val ny= sc.textFile("data/new_york/")val header=ny.firstval filterNY ...

  7. 大数据入门到精通11-spark dataframe 基础操作

    // dataframe is the topic 一.获得基础数据.先通过rdd的方式获得数据 val ny= sc.textFile("data/new_york/")val ...

  8. 大数据入门到精通10--spark rdd groupbykey的使用

    //groupbykey 一.准备数据val flights=sc.textFile("data/Flights/flights.csv")val sampleFlights=sc ...

  9. 大数据入门到精通8-spark RDD 复合key 和复合value 的map reduce操作

    一.做基础数据准备 这次使用fights得数据. scala> val flights= sc.textFile("/user/hdfs/data/Flights/flights.cs ...

随机推荐

  1. 建筑的永恒之道 (C·亚历山大 著)

    永恒之道 建筑或城市只有踏上了永恒之道,才会生机勃勃. 第1章 永恒之道 它是一个唯有我们自己才能带秩序的过程,它不可能被求取,但只要我们顺应它,它便会自然而然地出现. 质 为了探求永恒之道,我们首先 ...

  2. c# automapper 使用(一)

    一.最简单的用法 有两个类User和UserDto public class User { public int Id { get; set; } public string Name { get; ...

  3. Flutter 学习资料

    Flutter 学习资料: 学习资料 网址 Flutter 中文网 https://flutterchina.club/ <Flutter实战>电子书 https://book.flutt ...

  4. Linux之cd、pwd、mkdir、rmdir

    cd.pwd.mkdir.rmdir 命令功能: 切换到指定的目录,可用绝对路径和相对路径 命令格式: cd directory 命令参数: 无 命令实例: 1.切换到/bin目录 vbird@Ubu ...

  5. googletest--Death Test和Exception Test

    Death Test验证某个状态会使进程以某个错误码和错误消息离开 #include <gtest\gtest.h> #include "MyStack.h" // D ...

  6. VS在.NETFramework升级时遇到类库冲突如何解决

    相信大家在开发环境中随着程序的不断升级,很多时间需要升级. NETFramework版本.今天项目中遇到的问题是从. NETFramework4.0升级到4.5时提示 Entityframework. ...

  7. 前端-JavaScript1-3——JavaScript之字面量

    字面量?????? 字面量:英语叫做literals,有些书上叫做直接量.看见什么,它就是什么. 我们先来学习数字的字面量,和字符串的字面量.剩余的字面量类型,我们日后遇见再介绍. 3.1 数字的字面 ...

  8. Linux安装rz/sz,htop插件

    Linux下rz/sz安装及使用方法 sz: 将选定的文件发送(send)到本地机器; rz:运行该命令会弹出 一个文件选择窗口, 从本地选择文件上传到服务器(receive). 下载安装包 lrzs ...

  9. sas 获取数据集观测数量

    DATA _NULL_;SET SASHELP.CLASS NOBS=N;CALL SYMPUTX('N',N);STOP;RUN; %PUT N=&N.; 运行结果: 57 DATA _NU ...

  10. CRM 2016 及 CRM 365 更新地址

    CRM2016安装程序下载地址: https://www.microsoft.com/zh-cn/download/details.aspx?id=50372 CRM 365 更新地址: https: ...