Hadoop 统计单词字数的例子

2019-03-28 13:46|来源: 网络

Hadoop 的核心还是 Map-Reduce过程和 hadoop分布式文件系统

第一步:定义Map过程

  1. /** 
  2.  * 
  3.  * Description: 
  4.  * 
  5.  * @author charles.wang 
  6.  * @created Mar 12, 2012 1:41:57 PM 
  7.  *  
  8.  */ 
  9. public class MyMap extends Mapper<Object, Text, Text, IntWritable> { 
  10.      
  11.     private static final IntWritable one = new IntWritable(1); 
  12.     private Text word; 
  13.      
  14.      
  15.     public void map(Object key ,Text value,Context context)  
  16.             throws IOException,InterruptedException{ 
  17.          
  18.         String line=value.toString(); 
  19.         StringTokenizer tokenizer = new StringTokenizer(line); 
  20.         while(tokenizer.hasMoreTokens()){ 
  21.             word = new Text(); 
  22.             word.set(tokenizer.nextToken()); 
  23.             context.write(word, one); 
  24.         } 
  25.          
  26.     } 
  27.  

第二步: 定义 Reduce 过程

  1. /** 
  2.  * 
  3.  * Description: 
  4.  * 
  5.  * @author charles.wang 
  6.  * @created Mar 12, 2012 1:48:18 PM 
  7.  *  
  8.  */ 
  9. public class MyReduce extends Reducer<Text, IntWritable, Text, IntWritable> { 
  10.      
  11.     public void reduce (Text key,Iterable<IntWritable> values,Context context) 
  12.         throws IOException ,InterruptedException{ 
  13.          
  14.         int sum=0
  15.         for(IntWritable val: values){ 
  16.             sum+=val.get(); 
  17.         } 
  18.          
  19.         context.write(key, new IntWritable(sum)); 
  20.     } 
  21.  

相关问答

更多
  • 我不是高手,但我可以告诉你我怎么学习。①选择一个Hadoop的版本,然后阅读文档了解Hadoop:What's Hadoop, Why Hadoop exists;②安装Hadoop,三种方式都试下;③在Hadoop文档里面有Hadoop Command的资料,I.hdfs command,II.job command,尽量试试这两方面的命令;④Hadoop Files,看看Hadoop文件的概念,关注它的分布式特点,然后看看Reduce函数输出的文件;⑤自己写WordCount与Advanced Word ...
  • 我不是高手,但我可以告诉你我怎么学习。①选择一个Hadoop的版本,然后阅读文档了解Hadoop:What's Hadoop, Why Hadoop exists;②安装Hadoop,三种方式都试下;③在Hadoop文档里面有Hadoop Command的资料,I.hdfs command,II.job command,尽量试试这两方面的命令;④Hadoop Files,看看Hadoop文件的概念,关注它的分布式特点,然后看看Reduce函数输出的文件;⑤自己写WordCount与Advanced Word ...
  • 在reducer中,输出值是MapWritable类型的结果 。 如果这是你的意图,你需要更换这一行 job.setOutputValueClass(IntWritable.class); 同 job.setOutputValueClass(MapWritable.class); 编辑: 由于映射器输出与reducer(final)输出不同,因此您还应该设置 job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass( ...
  • 杰里米的评论是正确的。 通常,示例可执行jar在本地jvm和集群工作节点上运行。 它应该使用hadoop命令启动:hadoop(或hadoop版本2.0及之后的纱线)以确保正确加载群集配置和相关的lib。 有关完整的演练,请参阅此处有关于1.2.1版本的hadoop 1.2.1教程的hadoop教程 : hadoop 1.2.1教程 如果有机会,你应该检查最新的hadoop版本。 现在是2.6.0。 Jeremy's comment is right on the money. Typically, the ...
  • 这取决于很多因素,包括配置,机器,内存配置,JVM设置等。还需要减去JVM启动时间。 它对我来说运行速度要快得多。 也就是说,小数据集的速度当然比专门的C程序要慢 - 请考虑它在“幕后”做了什么。 尝试使用数千个数据分布在几千个文件中,并查看会发生什么。 This depends on a large number of factors, including your configuration, your machine, memory config, JVM settings, etc. You als ...
  • 看一下http://:50030或http://:50030 / jobhistory.jsp(在底部。 每个作业/任务/任务部分(地图,排序,减少)都有分析。 非常方便。 你可以编写自己的日志 - 我只是“忘记”所有的分析页面并将它们通过awk进行粗略统计。 Take a look at http://:50030 or http://:50030/jobhistory.jsp (at the bottom. There is a analysis for each Job/Task/Task-Part ...
  • 我按原样使用了您的代码,并在进行了3次修改后进行了编译: 在以下语句中,将filename更改为fileName ( fileName 'N'大写) 更改: word.set(itr.nextToken().toLowerCase().replaceAll("[^a-z]+","") +" "+ filename); 至: word.set(itr.nextToken().toLowerCase().replaceAll("[^a-z]+","") +" "+ fileName); 导入的包Gene ...
  • 在您的情况下,由于分区1和分区3都具有密钥“WHO”,因此可以保证两个分区转到同一个reducer。 更新 在hadoop中,任何时候任务mapred.tasktracker.reduce.tasks.maximum的最大减少任务数由mapred.tasktracker.reduce.tasks.maximum属性决定。 并且通过-D mapred.reduce.tasks=n设置MapReduce作业的reducers数量 当存在多个reducer时,map任务会对其输出进行分区,每个reduce会为每个 ...
  • 到目前为止,您在每个reduce函数的末尾都写出了最大值 - 因此每个reducer将获得多个条目。 当您将密钥的引用复制到max_occured_key变量(而不是复制值)时,您也遇到了引用重用问题。 你应该修改如下: 在构造时初始化max_occured_key变量(到空文本) 调用max_occured_key.set(key); 而不是使用equals赋值 - 引用key参数重用于reduce方法的所有迭代,因此实际对象将保持不变,只是每次迭代将修改基础内容 重写清理method并将context. ...
  • 映射器api https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapreduce/Mapper.html 减少api https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapreduce/Reducer.html 帮助您入门的教程 http://hadoop.apache.org/docs/r0.18.3/mapred_tutorial.html The mapper ...