91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mapreduce wordcount怎么理解

發布時間:2021-12-30 14:07:11 來源:億速云 閱讀:155 作者:iii 欄目:云計算

這篇文章主要介紹“mapreduce wordcount怎么理解”,在日常操作中,相信很多人在mapreduce wordcount怎么理解問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”mapreduce wordcount怎么理解”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

wordcount統計個數,在看代碼時總是能看懂,但是真正的邏輯反而一直不明比,比如map端時怎么處理,reduce時又是怎么處理的,現在明白了。

原理是這樣的,map端時讀取每一行數據,并把每行數據中的一個字符統計一次,如下:

map 數據 {key,value} :

    {0,hello word by word}

    {1,hello hadoop by hadoop}

上面就是map端輸入的key與value,在map端處理后會生成以下數據:

   {hello,1} {word,1} {by,1} {word,1}

    {hello,1} {hadoop,1} {by,1} {hadoop,1}

當看到這時大家都能明白,但是在reduce端時,就怎么也看不明白了,不知道是怎么對字符做統一的,再下通過對hadoop原理的分析得出在到reduce端時,會對map端發過來的數據進行清洗,清洗后的數據應該是以下結構:

[{hello},{1,1}] [{word},{1,1}] [{by},{1,1}] [{hadoop},{1,1}]

然后輸入到reduce端,reduce會對每一個values做循環操作,對數據進行疊加,并輸出到本地,具體代碼請繼續欣賞,不做多過解析。

public class WordCount extends Configured implements Tool{
 public static class Map extends Mapper<LongWritable,Text,Text,IntWritable>{
  private final static IntWritable one = new IntWritable(1);
  private Text word = new Text();
  public void map(LongWritable key,Text value, Context context)
  throws IOException,InterruptedException{
   String line = value.toString();
   StringTokenizer tokenizer = new StringTokenizer();
   while(tokenizer.hasMoreTokens()){
    word.set(tokenizer.nextToken);
    context.write(word,one);
   }
  }
 }
 
 public static class Reduce extends Reducer<Text,IntWritable,Text,IntWritable>{
  public void reduce(Text key,Iterable<IntWritable> values,Context context)
  throws IOException,InterruptedException{
   int sum = 0 ;
   for(IntWritable val: values) {
    sum += val.get();
   }
   context.write(key,new IntWritable(sum));
  }
 }
 
 public int run(String[] arge) throws Exception{
  Job job = new Job(getConf());
  job.setJarByClass(WordCount.class);
  job.setJobName("wordcount");
  
  job.setOutputKeyClass(Text.class);
  job.setOutputValueClass(IntWritable.class);
  
  job.setMapperClass(Map.class);
  job.setReduceClass(reduce.class);
  
  job.setInputFormatClass(TextInputFormat.class);
  job.setOutputFormatClass(TextInputFormat.class);
  
  FileInputFormat.setInputPaths(job,new Path(args[0]));
  FileInputFormat.setOutputPaths(job, new Path(args[1]));
  
  boolean success = job.waitForCompletion(true);
  return success ? 0 : 1;
 }
 
 public static void main(String[] args) throws Exception{
  int ret = ToolRunner.run(new WordCount(),args);
  System.exit(ret);
 }
}
  

到此,關于“mapreduce wordcount怎么理解”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辽宁省| 柞水县| 长顺县| 林西县| 婺源县| 鄢陵县| 奉化市| 淳安县| 历史| 达孜县| 临桂县| 新泰市| 临汾市| 新闻| 烟台市| 开鲁县| 永顺县| 澄城县| 广丰县| 阿克陶县| 益阳市| 古浪县| 浦城县| 文昌市| 靖远县| 临沭县| 金堂县| 彭州市| 伊宁县| 温泉县| 景泰县| 西吉县| 股票| 洛浦县| 沙坪坝区| 综艺| 桂阳县| 哈尔滨市| 鲜城| 佛冈县| 宣城市|