[Mapreduce]eclipse下写wordcount「建议收藏」

[Mapreduce]eclipse下写wordcount

大家好,又见面了,我是全栈君。

上传两个文件到hdfs上的input目录下

代码例如以下:

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class wordcount {

  public static class TokenizerMapper
       extends Mapper<Object, Text, Text, IntWritable>{

    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(Object key, Text value, Context context
                    ) throws IOException, InterruptedException {
      StringTokenizer itr = new StringTokenizer(value.toString());
      while (itr.hasMoreTokens()) {
        word.set(itr.nextToken());
        context.write(word, one);
      }
    }
  }

  public static class IntSumReducer
       extends Reducer<Text,IntWritable,Text,IntWritable> {
    private IntWritable result = new IntWritable();

    public void reduce(Text key, Iterable<IntWritable> values,
                       Context context
    		  ) throws IOException, InterruptedException {
        int sum = 0;
        for (IntWritable val : values) {
          sum += val.get();
        }
        result.set(sum);
        context.write(key, result);
      }
    }

    public static void main(String[] args) throws Exception {
      Configuration conf = new Configuration();
      Job job = Job.getInstance(conf, "word count");
      job.setJarByClass(wordcount.class);
      job.setMapperClass(TokenizerMapper.class);
      job.setCombinerClass(IntSumReducer.class);
      job.setReducerClass(IntSumReducer.class);
      job.setOutputKeyClass(Text.class);
      job.setOutputValueClass(IntWritable.class);
      FileInputFormat.addInputPath(job, new Path("hdfs://localhost:9000/input"));               //这里直接指定了文件路径.在run configuration下指定也行。但没配置好
      FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/output1"));
      System.exit(job.waitForCompletion(true) ?

0 : 1); } }

注:eclipse下初次执行wordcount可能会有log4j警告。能够在src下建立名为log4j.properties的文件,就可以消除警告,内容例如以下:

log4j.rootLogger=INFO,Console
 
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.Threshold=DEBUG
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%d]%l%5p:%m%n
 
log4j.appender.DebugFile=org.apache.log4j.RollingFileAppender
log4j.appender.DebugFile.File=../log/debugFile.log
#log4j.appender.DebugFile.File=debugFile.log
log4j.appender.DebugFile.Append=true
log4j.appender.DebugFile.Threshold=DEBUG
log4j.appender.DebugFile.layout=org.apache.log4j.PatternLayout
log4j.appender.DebugFile.layout.ConversionPattern=[%d]%l%5p:%m%n
log4j.appender.DebugFile.MaxFileSize=20MB
log4j.appender.DebugFile.MaxBackupIndex=10
 
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
 
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Connection = INFO
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG
log4j.logger.java.sql.ResultSet = DEBUG
 
log4j.logger.com.yuetao=DEBUG

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115422.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 小熊工厂 bt[通俗易懂]

    小熊工厂 bt[通俗易懂]Welcometomyblog!小熊工厂 软件大小:20986KB软件语言:简体中文软件类别:国产软件/共享版/趣味软件应用平台:Win9x/NT/2000/XP/2003界面预览:无插件情况: 投诉更新时间:2006-09-2214:55:33下载次数:4426推荐等级:联系人:ricky408163.com开发商:小熊工厂

    2022年6月13日
    31
  • makefile 编译参数_gcc使用说明

    makefile 编译参数_gcc使用说明gcc编译源文件共有4个过程,预处理、编译、汇编、链接。预处理:命令:gcc-Etest.c-otest.i(-o后面指定生成文件的命名)过程:展开宏定义(#define),处理编译条件指令(#if#ifndef等),插入引用的头文件(#include),删除注释,添加行号和文件标识。结果:生成.i文件,一般的文本编辑器都能打开编译:命令:gcc-Ste…

    2022年10月13日
    0
  • Lambda架构和Kappa架构

    Lambda架构和Kappa架构 数据系统架构——Lambdaarchitecture(Lambda架构)传统系统的问题“我们正在从IT时代走向DT时代(数据时代)。IT和DT之间,不仅仅是技术的变革,更是思想意识的变革,IT主要是为自我服务,用来更好地自我控制和管理,DT则是激活生产力,让别人活得比你好”——阿里巴巴董事局主席马云。数据量从M的…

    2022年6月25日
    26
  • PyCharm激活码永久有效PyCharm2022.1.1激活码教程-持续更新,一步到位

    PyCharm激活码永久有效PyCharm2022.1.1激活码教程-持续更新,一步到位PyCharm激活码永久有效2022.1.1激活码教程-Windows版永久激活-持续更新,Idea激活码2022.1.1成功激活

    2022年6月19日
    323
  • 小心onpropertychange在ie8上的地雷[通俗易懂]

    onpropertychangeonpropertychange的话,只要当前对象属性发生改变,都会触发事件,但是它是IE专属的

    2022年4月10日
    34
  • RationalDMIS 7.1 高级编程2020

    $$/*HeaderDMISMN/’Createdby[爱科腾瑞科技(北京)有限公司-101520-DEMO-10546A(深圳力合)]onTuesday,June30,2020′,4.0UNITS/MM,ANGDEC,MMPSWKPLAN/XYPLANPRCOMP/ONTECOMP/ONFLY/1.0000MODE/PROG,MANSNSET/APPRCH,2.0000SNSET/RETRCT,2.0000SNSET/DEPTH,0.0000SNSET

    2022年4月6日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号