03WordCount案例

举报
一条coding 发表于 2022/01/28 00:18:10 2022/01/28
【摘要】 大家好,我是一条~ 5小时推开Spark的大门,第三小时,带大家做一个大数据入门的经典案例——WordCount。 话不多说,开干! 题目描述 WordCount,顾名思义,统计文件中不同单词出现...

大家好,我是一条~

5小时推开Spark的大门,第三小时,带大家做一个大数据入门的经典案例——WordCount。

话不多说,开干!

题目描述

WordCount,顾名思义,统计文件中不同单词出现的次数,一般在日志分析中经常会用到。

一条在学习Hadoop时做的一个项目是分析金庸小说中的人物关系,那要做的第一步就是统计各个人物出现的次数。

案例分析

如果让你用Java来实现这个需求,相信大家都会有思路。

  • 分词:把长句子分成单词,如果是规范的文本,可以用空格分割,不规范的文本,可以用jieba分词,感兴趣的同学可以百度了解一下。
  • 分组计数:相同的单词一组,计算出现的次数,并用一个map的保存。
  • 保存结果:将结果写入文件。

案例实现

1.本地实现

打开上一节建的WordCount.scala文件,编辑如下代码,每行都有注释,对Scala不熟悉的同学先不要纠结语法问题,我们的重点是Spark。

object WordCount {
  def main(args: Array[String]): Unit = {
    // 创建 Spark 运行配置对象
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("WordCount")
    // 创建 Spark 上下文环境对象(连接对象)
    val sc  = new SparkContext(sparkConf)
    // 读取文件
    var input=sc.textFile("src/main/java/test.txt");
    // 分词
    var lines=input.flatMap(line=>line.split(" "))
    // 分组计数
    var count=lines.map(word=>(word,1)).reduceByKey{(x,y)=>x+y}
    // 打印结果
    count.foreach(println)
    //关闭 Spark 连接
    sc.stop()
  }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

注意文件存放的路径,保证能读取到文件。

输出结果

2.提交到服务器

打包成jar包,上传到服务器,记得修改成服务上的文件路径。

#启动master
./sbin/start-master.sh
#启动worker 
./bin/spark-class org.apache.spark.deploy.worker.Worker spark://VM-24-10-centos:7077
#提交作业
./bin/spark-submit  --master spark://VM-24-10-centos:7077 --class WordCount /data/opt/spark/file/spark-wordcount-1.0-SNAPSHOT.jar

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

输出结果

最后

ok,一个经典的入门案例我们已经完成了,是不是觉得Spark也没那么难。

但是,不知道同学们有没有如下疑问:

  • Spark内部是如何组合计数的?
  • Worker和Master是什么关系?
  • RDD是什么东西?

如果有,请坚持打卡,明后两天将会解答大家的疑惑,填坑——Spark核心编程。

文章来源: blog.csdn.net,作者:一条coding,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/skylibiao/article/details/122679545

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。