[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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • BZOJ3503:[CQOI2014]和谐矩阵(高斯消元,bitset)

    BZOJ3503:[CQOI2014]和谐矩阵(高斯消元,bitset)

  • 推荐四款非常好用的免费音乐播放器

    推荐四款非常好用的免费音乐播放器不知道大家在工作的时候,是不是跟我一样,喜欢听着自己熟悉的旋律,心情也会很好。但是,原来的很多经典歌曲,要么改收费一首歌几块钱、要么是翻唱的,听起来也没有原版好,对于我们这些只是偶尔听听歌的、写写东西的人来说,的确有点不方便。今天,小莫为大家挑选了四个,截止到目前还能正常使用,并且功能十分强大的音乐播放器,歌曲都是免费的,建议低调收藏。1、音乐社一款很简洁的音乐播放器,涵盖了主流播…

  • 模电学习总结

    模电学习总结放大电路的主要性能指标➢电压放大倍数(电压增益)➢输入电阻.➢输出电阻➢通频带➢非线性失真系数、最大输出不失真电压、最大输出功率与效率.Au=uoui=U˙oU˙IA_{u}=\frac{u_{o}}{u_{i}}=\frac{\dot{U}_{o}}{\dot{U}_{I}}Au​=ui​uo​​=U˙I​U˙o​​Ri=uiiiR_{i}=\frac{u_{i}}{i_{…

  • hexdump命令_pg_dump命令

    hexdump命令_pg_dump命令有时候需要查看一些二进制文件的内容,比如二进制文件中包含的某些字符串。这个时候可以用hexdump工具看查看。常用参数:hexdump-C-nlength-sskipfile_name-C定义了导出的格式,-sskip指定了从文件头跳过多少字节,或者说是偏移量,默认是十进制。如果是0x开头,则是十六进制。-n指定了导出多少长度如果是寻找文本内容,则经常在后

  • 近期技术讨论贴(持续更新:12-10)

    近期技术讨论贴(持续更新:12-10)http://bbs.blueidea.com/thread-2455309-1-1.html转载于:https://www.cnblogs.com/jikey/archive/2009/12/24/1631436.html

  • centos7.6安装docker_docker 生产环境

    centos7.6安装docker_docker 生产环境前言前面一篇学了mac安装docker,这篇来学习在linux上安装docker环境准备Docker支持以下的CentOS版本,目前,CentOS仅发行版本中的内核支持Docker。Doc

发表回复

您的电子邮箱地址不会被公开。

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