Scala里的WordCount 案例

7.7.5 普通 WordCount 案例

在这里插入图片描述

package chapter07


object TestWordCount__简单版 {
  def main(args: Array[String]): Unit = {
    //单词计数:将集合中出现的相同单词计数,进行计数,取计数排名的前三的结果
    val stringList = List("Hello Scala Hbase kafka", "Hello Scala Hbase", " Hello Scala", "Hello")

    //1.将每个字符串转换成一个一个单词
    val wordList:List[String] = stringList.flatMap(str => str.split(" "));
    println(wordList)
    println("------------------------------------------------------------------------------------------")

    //2.将相同的单词放置在一起,则需要用Map进行(k,v)操作
    val wordSame:Map[String,List[String]] = wordList.groupBy(word => word)
    println(wordSame)
    println("------------------------------------------------------------------------------------------")

    //3.对相同的单词进行计数
    //(word,list) => (word,count)
    val wordToCount:Map[String,Int] = wordSame.map(tuple=>(tuple._1,tuple._2.size))
    println(wordToCount)
    println("------------------------------------------------------------------------------------------")

    //4.对计数完成后的结果进行排序(采用降序)
    val sortList:List[(String,Int)] = wordToCount.toList.sortWith{
      (A,B) =>{
        A._2>B._2
      }
    }
    println(sortList)
    println("------------------------------------------------------------------------------------------")

    //5.对排序后的结果取前3名、
    val resThreeList:List[(String,Int)] = sortList.take(3)
    println(resThreeList)

  }

}

7.7.6 复杂 WordCount 案例

TestWordCount__复杂版__方式01

package chapter07

object TestWordCount__复杂版__方式01 {
  def main(args: Array[String]): Unit = {
    val tupleList = List(("Hello Scala Spark World ", 4), ("Hello Scala Spark", 3), (" Hello Scala", 2), ("Hello", 1))
    val stringList:List[String]  = tupleList.map(t => (t._1 + " ") * t._2)
    val words:List[String] = stringList.flatMap(s=>s.split(" "))
    //在map中,如果传进来什么就返回什么,不要用 _ 省略
    val groupMap:Map[String,List[String]] = words.groupBy(word => word)
    //val groupMap:Map[String,List[String]] = words.groupBy(_)

    // //(word,list) => (word,count)
    val wordToCount:Map[String,Int] = groupMap.map(t=>(t._1,t._2.size))

    val wordCountList:List[(String,Int)] = wordToCount.toList.sortWith{
      (left,right) =>{
        left._2 > right._2
      }
    }.take(3)

    tupleList.map(t=>(t._1+" ")*t._2).flatMap(_.split(" ").groupBy(word=>word).map(t=>(t._1,t._2.size)))
    println(wordCountList)
  }
}

TestWordCount__复杂版__方式02

package chapter07

object TestWordCount__复杂版__方式02 {
  def main(args: Array[String]): Unit = {
    val tuples = List(("Hello Scala Hbase kafka",4),( "Hello Scala Hbase",3),(" Hello Scala",2),( "Hello",1))
    val wordToCountList:List[(String,Int)] = tuples.flatMap{
      t =>{
        val strings:Array[String] = t._1.split(" ")
        strings.map(word=>(word,t._2))
      }
    }
    // Hello, List((Hello,4), (Hello,3), (Hello,2), (Hello,1))
    // Scala, List((Scala,4), (Scala,3), (Scala,2)
    // Spark, List((Spark,4), (Spark,3)
    // Word, List((Word,4))
    val wordToTuoleMap:Map[String,List[(String,Int)]] = wordToCountList.groupBy(t=>t._1)
    val stringToInts:Map[String,List[Int]] = wordToTuoleMap.mapValues{
      datas=> datas.map(t=>t._2)
    }
    stringToInts
    //---------------------------------------------------------------------
    val wordToCountMap:Map[String,List[Int]] = wordToTuoleMap.map{
      t=>{
        (t._1,t._2.map(t1 => t1._2))
      }
    }
    val wordToTotalCountMap:Map[String,Int] = wordToTotalCountMap.map(t=>(t._1,t._2))
    println(wordToCountMap)
  }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/32967.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据可视化方案分享】电商数据分析

本文所分享的电商数据分析报表均来自奥威BI软件的电商数据分析方案!该方案是一套包含数据采集、数据建模、数据分析报表的系统化、标准化数据分析方案,下载套用,立见效果! 注意,奥威BI软件的电商数据分析方案分两类&a…

【基于Django框架的在线教育平台开发-01】账号登录及退出登录功能开发

文章目录 1 模型层开发2 视图层开发3 form表单验证4 配置urls.py5 模板层开发6 效果展示 1 模型层开发 用户数据表如下所示: FieldTypeExtraidintPrime Key & Auto Incrementpasswordvarchar(128)last_logindatetime(6)Allow Nullis_superusertinyint(1)usern…

mysql 常见锁类型

表锁 & 行锁 在 MySQL 中锁的种类有很多,但是最基本的还是表锁和行锁:表锁指的是对一整张表加锁,一般是 DDL 处理时使用,也可以自己在 SQL 中指定;而行锁指的是锁定某一行数据或某几行,或行和行之间的…

第二章 数据处理篇:transforms

教程参考: https://pytorch.org/tutorials/ https://github.com/TingsongYu/PyTorch_Tutorial https://github.com/yunjey/pytorch-tutorial 详细的transform的使用样例可以参考:ILLUSTRATION OF TRANSFORMS 文章目录 为什么要使用transformstransforms方…

二叉树题目:单值二叉树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:单值二叉树 出处:965. 单值二叉树 难度 3 级 题目描述 要求 如果二叉树每个结点都具有相同的值&am…

SQL死锁

目录 前言: 分析: 死锁产生的原因: sql死锁 模拟: 解决办法: (本质:快速筛选或高效处理、以此减少锁冲突) ①大事务拆成小事务,尽可能缩小事务范围 大事务:将多个操作放在一个事务中执行…

【MOOC 测验】第5章 链路层

1、局域网的协议结构一般不包括( ) A. 数据链路层B. 网络层C. 物理层D. 介质访问控制层 逻辑链路控制子层、介质访问控制子层、物理层 2、下列关于二维奇偶校验的说法,正确的是( ) A. 可以检测和纠正双比特差错B…

【CVRP测评篇】 算法性能如何?来测!

我跨越了2100015秒的距离,为你送上更全面的算法性能评测。 目录 往期优质资源1 CVRP数据集2 实验准备2.1 计算机配置2.2 调参方法2.3 参数设定2.4 实验方法 3 实验结果3.1 最优解统计3.1.1各数据集上的算法性能对比3.1.2 求解结果汇总3.1.3小结一下3.1.4 还有话说 3…

【软考网络管理员】2023年软考网管初级常见知识考点(10)- 网际协议IP及IPV6,IPV4详解

涉及知识点 分类的IP地址,子网划分,CIDR和路由汇聚,IPV4数据报格式,IPV6协议,软考网络管理员常考知识点,软考网络管理员网络安全,网络管理员考点汇总。 原创于:CSDN博主-《拄杖盲学…

剑指 Offer 68 - II. 二叉树的最近公共祖先 / LeetCode 236. 二叉树的最近公共祖先(搜索与回溯)

题目: 链接:剑指 Offer 68 - II. 二叉树的最近公共祖先;LeetCode 236. 二叉树的最近公共祖先 难度:中等 上一题博客:剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 / LeetCode 235. 二叉搜索树的最近公共祖先&#xf…

SSH远程直连Docker容器

文章目录 1. 下载docker镜像2. 安装ssh服务3. 本地局域网测试4. 安装cpolar5. 配置公网访问地址6. SSH公网远程连接测试7.固定连接公网地址8. SSH固定地址连接测试8. SSH固定地址连接测试 转载自cpolar极点云文章:SSH远程直连Docker容器 在某些特殊需求下,我们想ssh…

机器学习李宏毅学习笔记34

文章目录 前言一、Knowledge distillation二、Parameter quantization三、Architecture design四、Dynamic computation总结 前言 神经网络压缩(二)其他方法 一、Knowledge distillation 先train一个大的network叫做teacher network,小的ne…

Vue3:计算属性、监听器

computed 计算属性 计算属性是指 基于现有状态派生 (演变) 出新的状态,现有状态发生变化,派生状态重新计算。 computed 接收回调函数作为参数,基于回调函数中使用的响应式数据进行计算属性的创建,回调函数的返回值就是基于现有状态…

壳牌小程序笔记

壳牌加油站 uni-app-基础-day01 概览 为什么要学uni-app? 现在很多中小型公司,都有自己的小程序项目,然后开发小程序就会用到uni-app。 uni-app没有诞生之前,怎么写小程序 使用原生微信小程序这个框架去开发? 只…

解析vcruntime140.dll文件,缺失了要怎么去修复?

在计算机的世界中,vcruntime140.dll是一个重要的动态链接库文件。然而,有时候这个文件可能会引发一系列问题,影响应用程序的正常运行。如果你缺少了vcruntime140.dll,那么你的程序就会打不开,今天我们一起来聊聊vcrunt…

鸟类识别Python,基于TensorFlow卷积神经网络【实战项目】

一、介绍 鸟类识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,…

Linux Ubuntu man文档的图文安装教程

文章目录 前言man文档的起源man文档的安装man文档的使用总结 前言 当提及"man文档"时,通常是指Unix和类Unix系统中的手册页(man page),因为Linux是在Unix的基础上发展而来的操作系统,所以我们的Linux也有ma…

IIS安装localhost显示下载,urlrewrite设置

1.取消ftp服务勾选 2. ping localhost ping 127.0.0.1 如果显示 ::1 则需要禁用ipv6 在注册表 找到并单击下面的注册表子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\ 双击“DisabledComponents”以修…

【机器学习】sklearn数据集的使用,数据集的获取和划分

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 sklearn数据集 二、安装sklearn二、获取数据集三、…

从电源 LED 读取智能手机的秘密?

研究人员设计了一种新的攻击方法,通过记录读卡器或智能手机打开时的电源 LED,使用 iPhone 摄像头或商业监控系统恢复存储在智能卡和智能手机中的加密密钥。 众所周知,这是一种侧信道攻击。 通过密切监视功耗、声音、电磁辐射或执行操作所需…