[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
时间: 2025-01-06 14:20:52

[Mapreduce]eclipse下写wordcount的相关文章

eclipse下执行wordcount报错 java.lang.ClassNotFoundException 解决办法

eclipse下执行wordcount报错 java.lang.ClassNotFoundException 17/08/29 07:52:54 INFO Configuration.deprecation: fs.default.name is deprecated. Instead, use fs.defaultFS 17/08/29 07:52:54 WARN util.NativeCodeLoader: Unable to load native-hadoop library for y

(四)伪分布式下jdk1.6+Hadoop1.2.1+HBase0.94+Eclipse下运行wordCount例子

本篇先介绍HBase在伪分布式环境下的安装方式,然后将MapReduce编程和HBase结合起来使用,完成WordCount这个例子. HBase在伪分布环境下安装 一.   前提条件 已经成功地安装了jdk1.6和hadoop1.2.1. Jdk1.6+Hadoop1.2.1在伪分布环境下具体的安装方法见:Hadoop1.2.1安装——单节点方式和单机伪分布方式 二.   环境 VMware® Workstation 10.04 Ubuntu14.04 32位 Java JDK 1.6.0 h

HTML中加入在Eclipse中写的java程序

       设计和编写一个可以用鼠标操作的Applet小应用程序和相应的HTML页面,观察Applet的执行过程,测试程序鼠标用户交互操作的效果.         我们假设在Eclipse下写了一个Mouse .java的Applet程序.其相应的HTML程序为 <html> <applet code=Mouse.class width=200 height=100> </applet> </html> 创建html文件:     新建一个文本文档,将HT

eclipse下安装配置hadoop(含WordCount程序测试)

这里我为大家介绍如何在windows下安装配置hadoop.,以及测试一个程序 所需要使用的插件和分别有: 一.准备工作 1.eclipse,最好是JAVAEE版本的,以为可以改变模式. 2.hadoop和eclipse的连接器: hadoop-eclipse-plugin-1.2.1.jar(这个是我所使用的,在这里可以自定义选取版本) 3.是hadoop源码包(下载最新的就可以). 将hadoop-0.20.2-eclipse-plugin.jar 复制到eclipse/plugins目录下

[Eclipse]已经写好的代码怎样切换为unix下的换行符?

切换换行符的显示格式, 一般的设置是这样的: 但是这样只能对新文件起作用,原来已经写好的还是那熊样.(怎么办呢,得吃后悔药啊,谁让你开始没准备好呢?!T_T) 下面就是后悔药: 这样就OK了. 附:有图有真相 转换前: 转换后: [Eclipse]已经写好的代码怎样切换为unix下的换行符?,布布扣,bubuko.com

hadoop——配置eclipse下的map-reduce运行环境 1

1.通过修改实例模板程序来实现自己的map-reduce: 为了让示例程序run起来: 1)安装eclipse 2)安装map-reduce的eclipse插件 eclipse的map-reduce插件可以很方便的创建hadoop项目(自动导入所依赖的map-reduce jar包)和打开map-reduce视图(在里面可以像查看本机文件系统一样直观的看到hdfs文件系统的结构) 安装详细步骤: i)查找eclipse的安装路径: $:whereis eclipse 1.通过修改实例模板程序来实

Eclipse下开发Scala(DT大数据梦工厂)

本讲主要内容:环境安装.配置.本地模式.集群模式.自动化脚本.web状态监控 ==========单机============ 开发工具开发 下载最新版Scala For Eclipse 1.建立工程,修改scala编译版本 2.加入Spark1.6.0的jar文件依赖 下载 http://apache.opencas.org/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz spark-assembly-1.6.0-hadoop2.6.0.jar

(转)Eclipse下搭建Hadoop2.4.0开发环境

Eclipse下搭建Hadoop2.4.0开发环境 一.安装Eclipse 下载Eclipse,解压安装,例如安装到/usr/local,即/usr/local/eclipse 4.3.1版本下载地址:http://pan.baidu.com/s/1eQkpRgu 二.在eclipse上安装hadoop插件 1.下载hadoop插件 下载地址:http://pan.baidu.com/s/1mgiHFok 此zip文件包含了源码,我们使用使用编译好的jar即可,解压后,release文件夹中的h

eclipse下hadoop应用开发有感

最近在学习hadoop,首先通过网上大把的教程搭建好了完全分布式环境,在分布式环境上运行wordcount也成功,接下来就打算自己写mr来处理实际的业务了,在真正的开发开始之前首先要搭建好开发环境啊,所以就想到了eclipse,可接下来遇到了好多的问题: 1.首先是考虑到找一个hadoop的插件,安装好后可以直接建立mr工程也可以运行,可是没想到在windows下用hadoop的插件配合进行开发,可是遇到的2个问题是对应版本的插件比较难找,自己编译也比较麻烦,但是如果可以自己编译成功那是最好:后