목차
准备
代码
运行
参考
데이터 베이스 MySQL 튜토리얼 hadoop wordcount新API例子

hadoop wordcount新API例子

Jun 07, 2016 pm 04:32 PM
api hadoop 준비하다

准备 准备一些输入文件,可以用hdfs dfs -put xxx/*?/user/fatkun/input上传文件 代码 package com.fatkun;?import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.StringTokenizer;?import org.apache.commons.lo

准备

准备一些输入文件,可以用hdfs dfs -put xxx/*?/user/fatkun/input上传文件

代码

package com.fatkun;
?
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
?
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
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;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
?
public class WordCount extends Configured implements Tool {
    static enum Counters {
        INPUT_WORDS // 计数器
    } 
?
    static Log logger = LogFactory.getLog(WordCount.class);
?
    public static class CountMapper extends
            Mapper {
        private final IntWritable one = new IntWritable(1);
        private Text word = new Text();
        private boolean caseSensitive = true;
?
        @Override
        protected void setup(Context context) throws IOException,
                InterruptedException {
            // 读取配置
            Configuration conf = context.getConfiguration();
            caseSensitive = conf.getBoolean("wordcount.case.sensitive", true);
            super.setup(context);
        }
?
        @Override
        protected void map(LongWritable key, Text value, Context context)
                throws IOException, InterruptedException {
            StringTokenizer itr = new StringTokenizer(value.toString());
            while (itr.hasMoreTokens()) {
                if (caseSensitive) { // 是否大小写敏感
                    word.set(itr.nextToken());
                } else {
                    word.set(itr.nextToken().toLowerCase());
                }
                context.write(word, one);
                context.getCounter(Counters.INPUT_WORDS).increment(1);
            }
        }
    }
?
    public static class CountReducer extends
            Reducer {
?
        @Override
        protected void reduce(Text text, Iterable values,
                Context context) throws IOException, InterruptedException {
            int sum = 0;
            for (IntWritable value : values) {
                sum += value.get();
            }
            context.write(text, new IntWritable(sum));
        }
?
    }
?
    @Override
    public int run(String[] args) throws Exception {
        Configuration conf = new Configuration(getConf());
        Job job = Job.getInstance(conf, "Example Hadoop WordCount");
        job.setJarByClass(WordCount.class);
        job.setMapperClass(CountMapper.class);
        job.setCombinerClass(CountReducer.class);
        job.setReducerClass(CountReducer.class);
?
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
?
        List other_args = new ArrayList();
        for (int i = 0; i 
<h2 id="运行">运行</h2>
<p>在eclipse导出jar包,执行以下命令</p>
<pre class="brush:php;toolbar:false">hadoop jar wordcount.jar com.fatkun.WordCount -Dwordcount.case.sensitive=false /user/fatkun/input /user/fatkun/output
로그인 후 복사

参考

http://cxwangyi.blogspot.com/2009/12/wordcount-tutorial-for-hadoop-0201.html

http://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html#Example%3A+WordCount+v2.0

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C언어에서 상수란 무엇인가요? 예를 들어주실 수 있나요? C언어에서 상수란 무엇인가요? 예를 들어주실 수 있나요? Aug 28, 2023 pm 10:45 PM

C언어에서 상수란 무엇인가요? 예를 들어주실 수 있나요?

PHP 프로젝트에서 API 인터페이스를 호출하여 데이터를 크롤링하고 처리하는 방법은 무엇입니까? PHP 프로젝트에서 API 인터페이스를 호출하여 데이터를 크롤링하고 처리하는 방법은 무엇입니까? Sep 05, 2023 am 08:41 AM

PHP 프로젝트에서 API 인터페이스를 호출하여 데이터를 크롤링하고 처리하는 방법은 무엇입니까?

React API 호출 가이드: 백엔드 API와 상호작용하고 데이터를 전송하는 방법 React API 호출 가이드: 백엔드 API와 상호작용하고 데이터를 전송하는 방법 Sep 26, 2023 am 10:19 AM

React API 호출 가이드: 백엔드 API와 상호작용하고 데이터를 전송하는 방법

Oracle API 사용 가이드: 데이터 인터페이스 기술 탐색 Oracle API 사용 가이드: 데이터 인터페이스 기술 탐색 Mar 07, 2024 am 11:12 AM

Oracle API 사용 가이드: 데이터 인터페이스 기술 탐색

Oracle API 통합 전략 분석: 시스템 간 원활한 통신 달성 Oracle API 통합 전략 분석: 시스템 간 원활한 통신 달성 Mar 07, 2024 pm 10:09 PM

Oracle API 통합 전략 분석: 시스템 간 원활한 통신 달성

Python을 사용하여 API 데이터를 CSV 형식으로 저장 Python을 사용하여 API 데이터를 CSV 형식으로 저장 Aug 31, 2023 pm 09:09 PM

Python을 사용하여 API 데이터를 CSV 형식으로 저장

Laravel API 오류 문제를 처리하는 방법 Laravel API 오류 문제를 처리하는 방법 Mar 06, 2024 pm 05:18 PM

Laravel API 오류 문제를 처리하는 방법

PHP API 인터페이스: 시작하기 가이드 PHP API 인터페이스: 시작하기 가이드 Aug 25, 2023 am 11:45 AM

PHP API 인터페이스: 시작하기 가이드

See all articles