`
qindongliang1922
  • 浏览: 2184468 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117546
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125936
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59929
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71305
社区版块
存档分类
最新评论

Scala版本的WordCount

阅读更多
在处理搜索的同义词数据时遇到一个问题,本来是由数据人员人工整理好的数据,发我直接使用,后来发现发我的数据里面总是存在点问题,也难怪了
2000行x5列条左右的数据,让人工去比对,若不是细心的人还真是容易出现问题,这已经是第三次整理的结果了,结果还是有问题,就自己写个程序,找出有问题的数据,然后再处理下,有问题的数据也就几十条。


搜索使用的同义词一般是如下格式的:

腾讯,QQ
奇虎,360,北京奇虎科技有限公司
中国,祖国,china
北京银行,北京银行股份有限公司
北京大学,北大
清华大学,清华

现在的要写个wordcount,统计出出现词频大于1的那个词语,可能会根据词频排个序啥的,需求很简单,用Java实现也不难,就是代码量可能有点大,所以就顺手用scala写一个,一方面以后要使用Spark来处理一些东西,另一方面正好补补scala基础,直接上代码,核心代码非常简洁只有10行:
package file

import scala.io.Source

/**
 * Created by qindongliang on 2015/7/20.
 * Scala版本的wordcount
 */
object WordCount {
  def main(args: Array[String]) {
      wordcount()//调用wordcount
  }

  /** **
    * scala版的wordcount,支持任意以指定分隔符分割的内容
    */
  def wordcount(): Unit ={
   //原始map
   val map=Source.fromFile("D:\\tmp\\csv\\sydata.txt")
     .getLines()
     .flatMap(_.split(","))
     .foldLeft(Map.empty[String, Int]){
      (count, word) => count + (word -> (count.getOrElse(word, 0) + 1))
    }
    val sortmap = map
      .toList //转成List排序
      .filter(_._2 > 1)//过滤出数量大于指定数目的数据,这里是1
      .sortWith(_._2 > _._2); //根据value值进行降序排序,( 降序(_._2 > _._2)升序(_._2 < _._2) )
    for(pair<-sortmap) println(pair) //遍历Map,输出每一个kv对
  }




}


处理的结果如下:
(,4398)
(中外运,3)
(中国外运,3)
(江苏舜天,3)
(邯郸钢铁,3)
(浪潮电子信息产业股份有限公司,2)
(浙江省医药保健品,2)
(移动通信,2)
(南钢,2)
(美克国际,2)
(邯钢,2)
(内蒙古远兴天然碱股份有限公司,2)
(莱钢,2)
(北京中创信测科技股份有限公司,2)
(辽河油田,2)
(重庆路桥,2)
(广州国光,2)
(上海锦江国际旅游股份有限公司,2)
(包头铝业,2)
(天一科技,2)
(特发信息,2)
(中纺,2)
(中国国际航空,2)
(白云山制药,2)
(马龙产业,2)
(三九宜工生化股份有限公司,2)
(铜都铜业,2)
(天然碱,2)
(武汉钢铁,2)
(天赐新大国际贸易,2)
(中国金茂(集团)股份有限公司,2)
(南宁百货大楼股份有限公司,2)
(中国国电,2)
(TCL,2)
(南华兰陵电气,2)
(中国石油,2)
(首钢,2)
(蓝星石化,2)
(三联商社股份有限公司,2)
(江西铜业,2)
(华北制药股份有限公司,2)
(SINOPEC,2)
(徐州工程机械,2)
(鞍钢,2)
(厦门金龙,2)
(澳柯玛,2)
(三一重工股份有限公司,2)
(丽珠医药集团股份有限公司,2)
(哈飞股份,2)
(京东方,2)
(曙光汽车,2)
(三星石化,2)
(大族激光,2)
(京东方科技集团股份有限公司,2)
(东北制药,2)
(上海宏盛科技发展股份有限公司,2)
(振华,2)
(深圳市大族激光科技股份有限公司,2)
(S蓝石化,2)
(唐山钢铁,2)
(申通地铁,2)
(蓝星石化科技股份有限公司,2)
(天津水泥,2)
(东方科学仪器,2)
(山东新华医疗器械股份有限公司,2)
(深圳市特发信息股份有限公司,2)
(太原钢铁,2)
(天颐科技,2)
(济南轻骑,2)
(实达电脑,2)
(中国石化,2)
(江铃汽车,2)
(中国铝业,2)
(SINOTRANS,2)
(广西阳光股份有限公司,2)
(傲冠电脑,2)
(厦门船舶重工股份有限公司,2)
(中国重型汽车,2)
(华能国际电力股份有限公司,2)
(中国旅行社,2)
(中视传媒股份有限公司,2)
(重庆钢铁,2)
(京能热电,2)
(重庆路桥股份有限公司,2)
(华源集团,2)
(莱芜钢铁,2)
(中软,2)
(中国水产,2)

至此,完成整个过程,代码有点混乱,但是功能还是非常强大的!


最后欢迎大家扫码关注微信公众号:我是攻城师(woshigcs),我们一起学习,进步和交流!(woshigcs)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!


0
0
分享到:
评论

相关推荐

    使用Scala设计WordCount程序

    使用Scala设计WordCount程序 软件环境: hadoop-2.6.5.tar.gz spark-1.6.2-bin-hadoop2.6.tgz scala-2.10.4.gz scala-SDK-4.0.0-vfinal-2. 11-linux.gtk.x86_64.tar.gz

    scala写的第一个wordcount例子

    Scala编写的WordCount程序是初学者接触这门函数式编程语言时常见的入门示例,它展示了如何处理文本数据并计算其中单词的出现次数。在这个例子中,我们主要涉及以下几个关键知识点: 1. Scala语言基础: Scala是一...

    hadoop scala spark 例子项目,运行了单机wordcount

    【标题】中的“hadoop scala spark 例子项目,运行了单机wordcount”指的是一个使用Hadoop、Scala和Spark框架实现的简单WordCount程序。在大数据处理领域,WordCount是入门级的经典示例,用于统计文本文件中单词出现...

    Scala考试题1

    19. **Scala 版本 wordcount**: - 处理给定的字符串列表,统计单词出现的次数。 20. **map 和 foreach 的区别**: - `map` 返回一个新的集合,应用函数到每个元素上。 - `foreach` 不返回值,只遍历并执行给定...

    spark框架中wordcount的scala实现

    scala语言和python一样都是交互式的语言,操作简单。这是wordcount的scala实现,简单明了,比java实现简单很多,希望对大家有所帮助

    flink-1.14.4 安装包 scala 2.12

    env.execute("Scala WordCount") ``` 4. **编译和运行**: 使用 SBT 或 IntelliJ IDEA 等 IDE 编译项目,然后通过 Flink 的命令行客户端提交作业到集群: ``` bin/flink run -m localhost:8081 path/to/your/...

    Spark:用Scala和Java实现WordCount

    用Scala和Java实现WordCount,其中Java实现的JavaWordCount是spark自带的例子($SPARK_HOME/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java)OS:RedHatEnterpriseLinuxServerrelease6.4...

    spark下实现wordcount

    scala&gt; val wordCount = textFile.flatMap(line =&gt; line.split(" ")) .map(word =&gt; (word, 1)) .reduceByKey(_ + _) scala&gt; wordCount.collect() ``` - **`sc.textFile`**:从指定的 HDFS 路径读取文本文件。 - *...

    Spark 最简单WordCount

    本教程将重点介绍如何使用Scala编写一个简单的WordCount程序,以及如何在本地和集群模式下运行它。 **一、Spark环境搭建** 1. 安装Java:Spark依赖于Java,因此首先确保系统中已安装Java 8或更高版本。 2. 获取...

    Springboot 结合Apache Spark 2.4.4与Scala 2.12 集成示例

    在本集成示例中,我们将探讨如何将Spring Boot与Apache Spark 2.4.4以及Scala 2.12版本相结合,实现一个简单的"Hello World"应用。Spring Boot以其便捷的微服务开发能力,而Apache Spark是大数据处理领域中的一员...

    基于HDFS的spark分布式Scala程序测试

    本篇文章将重点介绍如何在Hadoop分布式集群和基于Hadoop分布式文件系统(HDFS)的Spark集群上部署并配置Scala程序进行WordCount测试的过程。测试环境包括Spark Shell和IntelliJ IDEA。 #### 二、环境部署与配置 ##...

    第四章Spark&Scala的集成开发环境.docx

    在Eclipse中创建Spark项目时,确保选择正确的Scala版本(例如2.10.6),并将Spark相关的jar包添加到项目的类路径中。需要注意的是,导入所有jar包后可能会出现编译错误,这时需要删除重复的jar包。 接着,你可以...

    大数据课程-Scala编程基础-4.Scala数据结构_lk_edit.ppt

    学习Scala的数据结构,特别是数组和集合,有助于理解和实现各种算法,比如在大数据处理中常见的WordCount案例。在WordCount中,通常会用到集合的`flatMap`、`groupByKey`和`reduceByKey`等函数来统计文本中单词出现...

    一个基于Spring Boot的Spark开发手脚架(Java+Scala),开箱即用!模拟了1个WordCount.zip

    模拟了1个WordCount.zip"表明这是一个使用Spring Boot框架构建的Spark应用程序,它结合了Java和Scala两种编程语言,旨在提供一个快速启动和运行的开发环境。其中,WordCount是经典的分布式计算案例,用于统计文本中...

    flink-1.9.0-bin-scala_2.12.tgz安装包

    Scala版本为2.12,意味着它与Scala 2.12版本兼容。 1. 在Windows上: 使用WinRAR或7-Zip等工具解压缩文件,解压后会得到一个名为"flink-1.9.0"的目录,包含各种配置文件、可执行文件等。 2. 在Linux上: 使用tar...

    WordCount_Spark!_spark_wordcount_java_

    - 使用`JavaSparkContext`类代替Scala中的`SparkContext`,它提供了与Java API兼容的方法。 - 依赖管理:确保引入Spark的Java库,如`org.apache.spark:spark-core_2.11`和`org.apache.spark:spark-sql_2.11`。 - ...

    WordCount.scala

    本代码是spark学习的基础作业Wordcount ,代码简介明了,易于理解,对于初学者来说是一个很好的示例作用

    上手提示:使用新版IDEA+Maven+Scala编写Spark程序

    ### 使用新版IDEA+Maven+Scala编写Spark程序的关键步骤 #### 一、理解IDEA在2017版中的变化 2017版的IntelliJ IDEA(简称IDEA)相较于之前版本,在界面设计与操作流程上进行了较大的改进与优化。对于初次接触这个...

    使用IDEA开发Scala程序.docx

    在src/main/scala目录下,创建一个名为"WordCount.scala"的文件,编写WordCount程序的核心逻辑。 6. 配置pom.xml文件。这是Maven的项目对象模型文件,需要在此文件中声明Spark和Scala的依赖,以及其他必要的库。 7...

Global site tag (gtag.js) - Google Analytics