hadoop第一个程序WordCount

  1. package test;
  2.  
  3. import org.apache.hadoop.mapreduce.Job;
  4. import java.io.IOException;
  5. import java.util.StringTokenizer;
  6. import org.apache.hadoop.io.IntWritable;
  7. import org.apache.hadoop.io.Text;
  8. import org.apache.hadoop.fs.Path;
  9. import org.apache.hadoop.mapreduce.Mapper;
  10. import org.apache.hadoop.mapreduce.Reducer;
  11. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  12. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  13. /*
  14. * 作者:翟超科
  15. * 时间:2019.9.3
  16. * 任务:mapreduce 实现单词计数
  17. * */
  18. public class WordCount {
  19. //map类继承Mapper,实现map功能
  20. public static class doMapper extends Mapper<Object, Text, Text, IntWritable>{
  21. //定义变量 one 为数字1
  22. public static final IntWritable one = new IntWritable(1);
  23. //定义关键字变量 word
  24. public static Text word = new Text();
  25. @Override
  26. protected void map(Object key, Text value, Mapper<Object, Text, Text, IntWritable>.Context context)
  27. throws IOException, InterruptedException {
  28. //将hdfs上的文件按行分割放入tokenzer集合中
  29. StringTokenizer tokenizer = new StringTokenizer(value.toString(),"\t");
  30. //将每一行作为一个关键字
  31. word.set(tokenizer.nextToken());
  32. //每个关键字出现1次,将键值对写入缓存。
  33. context.write(word, one);
  34.  
  35. }
  36. }
  37.  
  38. //reduce部分整合缓存的键值对,
  39. public static class doReduce extends Reducer<Text, IntWritable, Text, IntWritable>{
  40. //定义每次读入的键值对的同键值对的个数
  41. private IntWritable result = new IntWritable();
  42. @Override
  43. protected void reduce(Text key, Iterable<IntWritable> values, Reducer<Text, IntWritable, Text, IntWritable>.Context context)
  44. throws IOException, InterruptedException {
  45. int sum = 0;//定义每个键对应的值只用0个
  46. for(IntWritable value:values) {
  47. sum += value.get();
  48. }
  49. result.set(sum);
  50. context.write(key, result);
  51. }
  52. }
  53. public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
  54. // TODO Auto-generated method stub
  55. Job job = Job.getInstance();
  56. job.setJobName("WordCount");
  57. job.setJarByClass(WordCount.class);
  58. job.setMapperClass(doMapper.class);
  59. job.setReducerClass(doReduce.class);
  60. job.setOutputKeyClass(Text.class);
  61. job.setOutputValueClass(IntWritable.class);
  62. Path in = new Path("hdfs://192.168.13.101:9000/data");//文件所处位置
  63. Path out = new Path("hdfs://192.168.13.101:9000/output");//输出位置
  64. FileInputFormat.addInputPath(job,in);
  65. FileOutputFormat.setOutputPath(job,out);
  66. System.exit(job.waitForCompletion(true) ? 0 : 1);
  67.  
  68. }
  69.  
  70. }

 

hadoop第一个程序WordCount的更多相关文章

  1. Hadoop学习6--里程碑式的开始之执行第一个程序wordcount

    一.先在HDFS文件系统创建对应的目录,具体如下: 1.待处理文件存放目录 /data/wordcount(之所以创建wordcount,是为了对文件分类,对应本次任务名) 命令:hadoop fs ...

  2. hadoop第一个例子WordCount

    hadoop查看自己空间 http://127.0.0.1:50070/dfshealth.jsp import java.io.IOException; import java.util.Strin ...

  3. JStorm第一个程序WordCount详解

    一.Strom基本知识(回顾) 1,首先明确Storm各个组件的作用,包括Nimbus,Supervisor,Spout,Bolt,Task,Worker,Tuple nimbus是整个storm任务 ...

  4. Spark学习之第一个程序 WordCount

    WordCount程序 求下列文件中使用空格分割之后,单词出现的个数 input.txt java scala python hello world java pyfysf upuptop wintp ...

  5. spark-scala开发的第一个程序WordCount

    package ***** import org.apache.spark.{SparkConf, SparkContext} object WordCount { def main(args: Ar ...

  6. Hadoop学习历程(三、第一个程序)

    根据之前的操作,我们已经可以正常的启动Hadoop了,关于真正的集群我会在之后进行说明.现在我们来看一下第一个程序吧 1. 在eclipse上建立一个java项目 2. 将 /usr/hadoop/s ...

  7. Hadoop环境搭建及wordcount程序

    目的: 前期学习了一些机器学习基本算法,实际企业应用中算法是核心,运行的环境和数据处理的平台是基础. 手段: 搭建简易hadoop集群(由于机器限制在自己的笔记本上通过虚拟机搭建) 一.基础环境介绍 ...

  8. (转载)Hadoop示例程序WordCount详解

    最近在学习云计算,研究Haddop框架,费了一整天时间将Hadoop在Linux下完全运行起来,看到官方的map-reduce的demo程序WordCount,仔细研究了一下,算做入门了. 其实Wor ...

  9. 第一个MapReduce程序——WordCount

    通常我们在学习一门语言的时候,写的第一个程序就是Hello World.而在学习Hadoop时,我们要写的第一个程序就是词频统计WordCount程序. 一.MapReduce简介 1.1 MapRe ...

随机推荐

  1. WinForm DevExpress使用之ChartControl控件绘制图表二——进阶

    1. 多坐标折线图 在这个项目中,我需要做不同采集地方和不同数据类型的数据对比,自然而然就用到了多重坐标轴,多重坐标轴可以是多个X轴,也可以是Y轴,它们的处理方式类似.本文通过项目中的实际例子介绍多重 ...

  2. 洛谷P1006 传纸条【dp】

    题目:https://www.luogu.org/problemnew/show/P1006 题意: 给定一个m*n的矩阵,从(1,1)向下或向右走到(m,n)之后向上或向左走回(1,1),要求路径中 ...

  3. 洛谷-P3808-AC自动机(模板)

    链接: https://www.luogu.org/problem/P3808 题意: 给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过. 思路: 模板, 代码: #include < ...

  4. Ubuntu本地软件源制作

    操作 获取需要的deb包 #执行安装后,安装的包会保存在/var/cache/apt/archives 目录下 apt-get install vim #查看 正在处理用于 man-db (2.8.7 ...

  5. 【VS调试】VS调试的时候使用IP地址,局域网的设备可以访问并调试

    使用IIS Express调试,只能通过  http://localhost:端口  进行访问 客户端的设备如何才能通过 http://ip地址:端口 访问后台程序进行调试呢? 第一步,打开项目属性, ...

  6. Python JSON Ⅱ

    json.loads json.loads 用于解码 JSON 数据.该函数返回 Python 字段的数据类型. 语法 实例 以下实例展示了Python 如何解码 JSON 对象: 以上代码执行结果为 ...

  7. 组合模式(Composite)---结构型

    1 基础知识 定义:将对象组合成树形结构以表示“部分-整体”的层次结构.特征:组合模式使得客户端对单个对象和组合对象保持一致的方式处理. 本质:统一叶子对象和组合对象. 目的:让客户端不再区分操作的是 ...

  8. js监听页面标签切换

    var OriginTitile = document.title, titleTime; document.addEventListener('visibilitychange', function ...

  9. 第二章 Python数据导入

    数据导入 数据存储的两个地方: 文件 CSV.Excel.TXT(学习层面) 数据库(公司实战层面) Mysql.Access.SQL Server 导入CSV文件 CSV文件第一行是列名,第二行到最 ...

  10. 重写equals为啥需要重写hashCode

    描述 以前一直记得重写equals要把hashCode也要重写了,但是一直也是没有搞明白, 最近在看一些东西,觉得有必要记录一下. 了解一下equals equals是Object类的方法, equa ...