在处理搜索的同义词数据时遇到一个问题,本来是由数据人员人工整理好的数据,发我直接使用,后来发现发我的数据里面总是存在点问题,也难怪了
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)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!
分享到:
相关推荐
使用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
hadoop scala spark 例子项目,运行了单机wordcount
自己学习scala语言写的一个单词计数的例子,很好的用到了函数式编程思想,分享给大家共同学习。
scala语言和python一样都是交互式的语言,操作简单。这是wordcount的scala实现,简单明了,比java实现简单很多,希望对大家有所帮助
使用scala实现wordcount 基于Spark RDD 使用scala实现wordcount 基于Spark RDD 使用scala实现wordcount 基于Spark RDD
用Scala和Java实现WordCount,其中Java实现的JavaWordCount是spark自带的例子($SPARK_HOME/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java)OS:RedHatEnterpriseLinuxServerrelease6.4...
在Hadoop分布式集群和基于HDFS的spark分布式集群部署配置基础上进行Scala程序wordcount测试,环境分别是spark-shell和intelliJ IDEA 。
博客配套文件,详细演示了本地和集群模式如何运行Spark程序,演示了一个简单wordCount程序流程。
本代码是spark学习的基础作业Wordcount ,代码简介明了,易于理解,对于初学者来说是一个很好的示例作用
Eclipse+Maven+Scala Project+Spark | 编译并打包wordcount程序 学习用Eclipse+Maven来构建并打包一个简单的单词统计的例程。 第一步 在EclipseIDE中安装Scala插件 在Eclipse中安装Scala插件 第二步 创建Scala ...
一个基于Spring Boot的Spark开发手脚架(Java+Scala),开箱即用!模拟了1个WordCount
第四章Spark&Scala的集成开发环境的安装及运行,内容描述了spark版本问题修改、scala编程客户端的安装步骤及运行,已经scala的安装与运行
flink scala版的单词统计jar包,flink scala版的单词统计jar包,flink scala版的单词统计jar包
介绍 通过使用三种不同语言编写来编写分词及词频统计程序,比较在大数数据背景下,MapReduce和Spark对三种语言的适应性及其各自的效率对比;项目均采用IDEA+Maven进行构建,相关依赖均在对应pom.xml... wordCountScala
Scala Spark WordCount的实现如下 安 装 环 境: centOS 7,64位虚拟机 hadoop2.7.2 jdk1.8 scala 2.11.8 spark 2.1.1 on1是我的主机名 一、用idea创建一个Maven工程 在pom文件里的dependencies标签下添加依赖 ...
3.2.2.在spark shell中编写WordCount程序 1.首先启动hdfs 2.向hdfs上传一个文件到hdfs://hdp-01:9000/wordcount/input/a.txt 3.在spark shell中用scala语言编写spark程序 scala> sc.textFile("hdfs://hdp-01:...
input文件夹存放的是项目数据源;wordcount统计每个单词的总数;count和count1分别使用dataframe和rdd统计人口性别和身高;demo1最受欢迎的老师的问题;demo2多文件去重合并;demo3计算年度最高温度
leetcode算法题主函数如何写文件内容总览src/main/java/wordCountDemo/wordCountDemo.scala是使用scala写的wordcount程序src/main/java/wordcountJava/wordcount.java是使用java写的wordcount程序src/main/java/Api_...