• [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



  • 相关阅读:
    十层框架
    大规模web服务开发技术
    ASP.NET三层架构基础详细操作图文教程
    ASP.NET MVC4中的异步控制器
    集成多个子系统的单点登录(网站入口方式)附源码
    我的C#全能Excel操作(无需Office,不使用XML)
    代码重构——程序员应有的基因
    通过监听Windows消息对复合控件进行整体控制
    Android游戏框架
    Ext.NET
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5369649.html
Copyright © 2020-2023  润新知