麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 應用 > 軟件技巧 > 正文

MapReduce 入門之一步步自實現(xiàn)詞頻統(tǒng)計功能的教程

2024-07-16 17:44:36
字體:
供稿:網(wǎng)友

筆記中提供了大量的代碼示例,需要說明的是,大部分代碼示例都是本人所敲代碼并進行測試,不足之處,請大家指正~

LZ 本來想先仔細寫一寫 Hadoop 偽分布式的部署安裝,然后介紹一些 HDFS 的內(nèi)容再來介紹 MapReduce,是在是沒有抽出空,今天就簡單入門一下 MapReduce 吧。

一、MapReduce 概述

1.MapReduce 是一種分布式計算模型,由Google提出,主要用于搜索領(lǐng)域,解決海量數(shù)據(jù)的計算問題.

2.MapReduce 由兩個階段組成:Map和Reduce,用戶只需要實現(xiàn)map()和reduce()兩個函數(shù),即可實現(xiàn)分布式計算

二、具體實現(xiàn)

1.先來看一下 Eclipse 中此應用的包結(jié)構(gòu)

2.創(chuàng)建 map 的任務處理類:WCMapper

 

/* * 1.Mapper 類的四個泛型中,前兩個指定 mapper 輸入數(shù)據(jù)的類型,后兩個指定 mapper 輸出數(shù)據(jù)的類型 *   KEYIN 是輸入的 key 的類型,VALUEIN 是輸入的 value 的類型 *   KEYOUT 是輸出的 key 的類型,VALUEOUT 是輸出的 value 的類型 * 2.map 和 reduce 的數(shù)據(jù)的輸入輸出都是以 key-value 對的形式封裝的 * 3.默認情況下,框架傳遞給我們的 mapper 的輸入數(shù)據(jù)中,key 是要處理的文本中一行的起始偏移量,為 Long 類型, * 這一行的內(nèi)容為 value,為 String 類型的  * 4.后兩個泛型的賦值需要我們結(jié)合實際情況 * 5.為了在網(wǎng)絡中傳輸時序列化更高效,Hadoop 把 Java 中的 Long 封裝為 LongWritable, 把 String 封裝為 Text */public class WCMapper extends Mapper<LongWritable, Text, Text, LongWritable> {        //重寫 Mapper 中的 map 方法,MapReduce 框架每讀一行數(shù)據(jù)就調(diào)用一次此方法    @Override    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {        //書寫具體的業(yè)務邏輯,業(yè)務要處理的數(shù)據(jù)已經(jīng)被框架傳遞進來,就是方法的參數(shù)中的 key 和 value        //key 是這一行數(shù)據(jù)的起始偏移量,value 是這一行的文本內(nèi)容                //1.將 Text 類型的一行的內(nèi)容轉(zhuǎn)為 String 類型        String line = value.toString();                //2.使用 StringUtils 以空格切分字符串,返回 String[]        String[] words = StringUtils.split(line, " ");                //3.循環(huán)遍歷 String[],調(diào)用 context 的 writer()方法,輸出為 key-value 對的形式        //key:單詞   value:1        for(String word : words) {            context.write(new Text(word), new LongWritable(1));        }            }}

2.創(chuàng)建 reduce 的任務處理類:WCReducer:

 

/* * 1.Reducer 類的四個泛型中,前兩個輸入要與 Mapper 的輸出相對應。輸出需要聯(lián)系具體情況自定義 */public class WCReducer extends Reducer<Text, LongWritable, Text, LongWritable> {        //框架在 map 處理完之后,將所有的 kv 對緩存起來,進行分組,然后傳遞一個分組(<key,{values}>,例如:<"hello",{1,1,1,1}>),    //調(diào)用此方法    @Override    protected void reduce(Text key, Iterable<LongWritable> values, Context context)throws IOException, InterruptedException {                //1.定義一個計數(shù)器        long count = 0;                //2.遍歷 values的 list,進行累加求和        for(LongWritable value : values) {            //使用 LongWritable 的 get() 方法,可以將 一個 LongWritable 類型轉(zhuǎn)為 Long 類型            count += value.get();        }                //3.輸出這一個單詞的統(tǒng)計結(jié)果        context.write(key, new LongWritable(count));    }}            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄色网址电影 | 欧美黑大粗硬毛片视频 | 精品久久久久久久久久久下田 | 黄色7777 | 欧美成人小视频 | 久久国精品 | 国产精品av久久久久久网址 | 欧美精品国产综合久久 | av视在线 | 黄色特级视频 | 久久亚洲成人 | 色污视频在线观看 | 黄色网址免费进入 | 狠狠色噜噜狠狠狠米奇9999 | 黄色二区三区 | 在线免费观看毛片视频 | 成人福利视频在线 | 一级黄色在线免费观看 | 免费淫视频 | 一区二区久久电影 | 日本残忍极度灌浣肠视频 | 综合日韩av| 蜜桃网站在线观看 | 日本黄色大片免费 | 欧美日韩在线视频一区二区 | 久久久久99精品 | 日日狠狠久久偷偷四色综合免费 | 亚洲成人入口 | 美女久久久久久久久 | 亚洲无马在线观看 | 极品一级片 | 在线a毛片免费视频观看 | 亚洲综合网站 | 成人毛片在线免费看 | 一级在线观看视频 | 成人性爱视频在线观看 | 香蕉国产9 | 欧美一级毛片免费观看视频 | 毛片电影网址 | 日本教室三级在线看 | 免费看毛片的网站 |