WordCount实现的11种方法

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}import scala.collection.mutableobject Spark04_WordCount {def main(args: Array[String]): Unit = {val sparConf = new SparkConf().setMaster("local").setAppName("WordCount")val sc = new SparkContext(sparConf)wordCount1(sc)sc.stop()}//groupBydef wordCount1(sc: SparkContext): Unit = {val rdd = sc.makeRDD(List("Hello Scala", "Hello Spark"))val words = rdd.flatMap(_.split(" "))val group: RDD[(String, Iterable[String])] = words.groupBy(word => word)val wordCount: RDD[(String, Int)] = group.mapValues(iter => iter.size)wordCount.collect().foreach(println)}//groupByKeydef wordCount2(sc: SparkContext): Unit = {val rdd = sc.makeRDD(List("Hello Scala", "Hello Spark"))val words = rdd.flatMap(_.split(" "))val wordOne = words.map((_, 1))val group: RDD[(String, Iterable[Int])] = wordOne.groupByKey()val wordCount: RDD[(String, Int)] = group.mapValues(iter => iter.size)}//reduceByKeydef wordCount3(sc: SparkContext): Unit = {val rdd = sc.makeRDD(List("Hello Scala", "Hello Spark"))val words = rdd.flatMap(_.split(" "))val wordOne = words.map((_, 1))val wordCount: RDD[(String, Int)] = wordOne.reduceByKey(_ + _)}//aggregateByKeydef wordCount4(sc: SparkContext): Unit = {val rdd = sc.makeRDD(List("Hello Scala", "Hello Spark"))val words = rdd.flatMap(_.split(" "))val wordOne = words.map((_, 1))val wordCount: RDD[(String, Int)] = wordOne.aggregateByKey(0)(_ + _, _ + _)}//foldByKeydef wordCount5(sc: SparkContext): Unit = {val rdd = sc.makeRDD(List("Hello Scala", "Hello Spark"))val words = rdd.flatMap(_.split(" "))val wordOne = words.map((_, 1))val wordCount: RDD[(String, Int)] = wordOne.foldByKey(0)(_ + _)}//combineByKeydef wordCount6(sc: SparkContext): Unit = {val rdd = sc.makeRDD(List("Hello Scala", "Hello Spark"))val words = rdd.flatMap(_.split(" "))val wordOne = words.map((_, 1))val wordCount: RDD[(String, Int)] = wordOne.combineByKey(v => v,(x: Int, y) => x + y,(x: Int, y: Int) => x + y)}//countByKeydef wordCount7(sc: SparkContext): Unit = {val rdd = sc.makeRDD(List("Hello Scala", "Hello Spark"))val words = rdd.flatMap(_.split(" "))val wordOne = words.map((_, 1))val stringToLong: collection.Map[String, Long] = wordOne.countByKey()}//countByValuedef wordCount8(sc: SparkContext): Unit = {val rdd = sc.makeRDD(List("Hello Scala", "Hello Spark"))val words = rdd.flatMap(_.split(" "))val stringToLong: collection.Map[String, Long] = words.countByValue()}//reduce,aggregate,folddef wordCount91011(sc: SparkContext): Unit = {val rdd = sc.makeRDD(List("Hello Scala", "Hello Spark"))val words = rdd.flatMap(_.split(" "))//【(word,count),(word,count)】//word => Map[(word,1)]val mapWord = words.map(word => {mutable.Map[String, Long]((word, 1))})val wordCount = mapWord.reduce((map1,map2) => {map2.foreach{case (word,count) => {val newCount = map1.getOrElse(word,0L) + countmap1.update(word,newCount)}}map1})println(wordCount)}}

WordCount案例实现的11种方法相关推荐

  1. 11 种方法教你用 Python 高效下载资源

    1.使用requests 你可以使用requests模块从一个URL下载文件. 考虑以下代码: 你只需使用requests模块的get方法获取URL,并将结果存储到一个名为"myfile&q ...

  2. 巧克力设计灵感_找到设计灵感的11种方法

    巧克力设计灵感 If you do a lot of design work, facing designer's block on occasion can be very common. Much ...

  3. Object类11种方法

    Object类 11种方法 1概述 1 toString⽅法 2 hashCode() 3 equals⽅法 4 Class getClass() 5 Object clone()-克隆 6 void ...

  4. java script特效_通过JavaScript特效控制内容展示的11种方法

    通过JavaScript特效控制内容展示的11种方法 交互信息结构是一个交互式用户界面所需要完成的首要任务.更直观的布局结构设计,能使用户更好的理解内容.以下是百分网小编搜索整理的通过JavaScri ...

  5. SQL判断不等于的5种方法和判断非空的11种方法

    做牛客练习题的时候遇到的 链接:SQL9 查找除复旦大学的用户信息 描述 题目:现在运营想要查看除复旦大学以外的所有用户明细,请你取出相应数据 示例:user_profile id device_id ...

  6. Java 修饰符详解:吐血整理,带你从底层语法和开发案例疏通这 11 种常见修饰符

    文章目录 前言 一.11 种常见的 Java 修饰符 1.1.修饰符应用表 1.2.修饰符访问权限对比 二.public 修饰符 2.1.public 修饰符语法说明 2.2.public 修饰符开发 ...

  7. 哪些情况是友情链接作弊?总结了11种方法!

    相信大多数SEO人员都知道有友链这么一个名词,那么如何做友链? 如何做好友链却很少有人知道.做友链有很多渠道,使用的比较多的有两个. 第一个渠道是友链交换平台:(爱链)(换链神器) 第二个渠道是QQ里 ...

  8. 在Linux中查找用户帐户信息和登录详细信息的11种方法

    本文将介绍 11 种在 Linux 系统查找用户相关信息的有用方法.这里,我们会讲解在系统中获取一个用户账户详细信息.展示登录详细信息以及用户行为数据的命令. 如果你想要在 Linux 中添加用户,可 ...

  9. 在 Linux 中查找用户帐户和登录详细信息的 11 种方法

    本文将介绍 11 种在 Linux 系统查找用户相关信息的有用方法.这里,我们会讲解在系统中获取一个用户账户详细信息.展示登录详细信息以及用户行为数据的命令. 首先,我们会来看看如何使用命令查找一个用 ...

最新文章

  1. 阿里的御用框架,它非常牛啤!不服不行!
  2. 关于Unsupported major.minor version 52.0报错问题解决方案
  3. MySQL中的条件赋值
  4. ooalv自定义按钮、单击、双击、列编辑切换的事件用法
  5. 理解向日葵甘特之六——定义数据列
  6. C#LeetCode刷题之#9-回文数(Palindrome Number)
  7. DARPA Grand挑战赛Overbot的软硬件架构,轨迹规划和车辆控制
  8. android 4.0 屏蔽home键实现
  9. form表单的get和post传值问题
  10. php dw文件上传下载,PHP-文件上传
  11. 基于Python+Django的电影推荐系统毕业设计源码
  12. python入门(三) 实现QQ自动发送消息
  13. PHP icbc工商银行开放平台聚合支付,二维码扫码支付API云收呗对接步骤,稳步发展
  14. 【c语言】两个队列实现一个栈
  15. KSO-在js中文本框只允许输入数字
  16. 高考失利后,属于我的大学本科
  17. Leveraging Stereo-Camera Data for Real-Time Dynamic Obstacle Detection and Tracking
  18. 北美电影票房Top10-2019年12月20日:《星战9》1.77亿不及预期
  19. 用Oracle PL/SQL 编程实现小数转分数的方法
  20. android支持的视频音频硬解码器

热门文章

  1. mysql 61错误解决方法
  2. Yii2数据库操作的各种写法
  3. 小蚂蚁学习数据结构(16)——串的堆分配储存代码演示
  4. JBPM 3.3.0 + JBOSS 4.2.3 + ORACLE 9i
  5. Linux Qt入门:工程构建笔记一
  6. Anaconda创建、激活、退出、删除虚拟环境
  7. Photon Release 4.8.0汉化(附图教程)
  8. Swift 编程语言
  9. spring注解记录
  10. CSS 布局Float 【3】