本專案我們使用明星搜尋指數資料,分別統計出搜尋指數最高的男明星和女明星。
基於專案的需求,我們通過以下幾步完成:
3、編寫 partitioner 類,按性別,將結果指定給不同的 reduce 執行。
4、編寫 reducer 類,分別統計出男、女明星的最高搜尋指數。
5、編寫 run 方法執行 mapreduce 任務。
設計的mapreduce如下所示:
map =
reduce =
map
每次呼叫map(longwritable key, text value, context context)解析一行資料。每行資料儲存在value引數值中。然後根據'\t'分隔符,解析出明星姓名,性別和搜尋指數。
public void map(object key, text value, context context) throws ioexception, interruptedexception
}map()函式期望的輸出結果map =
combiner
對 map 端的輸出結果,先進行一次合併,減少資料的網路輸出。
public static class actorcombiner extends reducer< text, text, text, text>
} text.set(name+"\t"+maxhotindex);
context.write(key, text);
}}
partitioner
public static class actorpartitioner extends partitioner< text, text>
}
reduce呼叫reduce(key, iterable< text> values, context)方法來處理每個key和values的集合。我們在values集合中,計算出明星的最大搜尋指數。
public static class actorreducer extends reducer< text, text, text, text>
} context.write(new text(name), new text( key + "\t"+ maxhotindex));
}}
reduce()函式期望的輸出結果reduce =
run 驅動方法
在 run 方法中,設定任務執行各種資訊。
public int run(string args) throws exception
job job = new job(conf, "star");//新建乙個任務
job.setjarbyclass(star.class);//主類
job.setnumreducetasks(2);//reduce的個數設定為2
job.setpartitionerclass(actorpartitioner.class);//設定partitioner類
job.setmapoutputkeyclass(text.class);//map 輸出key型別
job.setmapoutputvalueclass(text.class);//map 輸出value型別
job.setcombinerclass(actorcombiner.class);//設定combiner類
job.setreducerclass(actorreducer.class);//reducer
job.setoutputkeyclass(text.class);//輸出結果 key型別
job.setoutputvalueclass(text.class);//輸出結果 value型別
fileinputformat.addinputpath(job, new path(args[0]));// 輸入路徑
fileoutputformat.setoutputpath(job, new path(args[1]));// 輸出路徑
job.waitforcompletion(true);//提交任務
return 0;
}
1、myclipse將專案編譯和打包為star.jar,使用ssh將 star.jar上傳至hadoop的$hadoop_home目錄下。
2、使用cd $hadoop_home切換到當前目錄,通過命令列執行hadoop作業
hadoop jar star.jar zimo.hadoop.star.star
你可以在dfs locations介面下檢視輸出目錄。
統計明星的搜尋指數
一 目的 根據給出的資料樣本,統計出搜尋指數最高的男明星和女明星。二 思路分析 三 部分資料 四 編寫程式 1.map函式解析資料集 map函式 key gender,value name hotindex public static class mapextends 2.combiner函式,對m...
Hadoop實戰應用
1 雲盤儲存系統通過hdfs實現 2 hadoop三大發行版本 1 apache 基礎版本,實際企業使用比較少 2 cloudera cdh cloudera的hadoop發行版 clouderamanager 集群軟體分發及管理監控 3 hortonworks hdp hortonworks da...
python TGI指數分析實戰
本次實戰的目的主要是了解tgi指數的定義,並在使用者訂單資訊資料集上利用python實現簡單的tgi指數偏好分析 tgi指數 目標群體中具有某一特徵的群體所佔的比例 總體中具有相同特徵的群體所佔的比例 100 關鍵字 特徵,總體,目標群體 因最近正退出一款客單價較高的產品,需要篩選出哪些城市具有高客...