目次
准备
代码
运行
参考

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上传文件

代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

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

ビジュアル Web 開発ツール

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