實訓任務05 MapReduce獲取成績表的最高分記錄
實訓任務05 MapReduce獲取成績表的最高分記錄
實訓1:統計用戶紡問次數
任務描述:
統計用戶在2016年度每個自然日的總訪問次數。原始數據文件中提供了用戶名稱與訪問日期。這個任務就是要獲取以每個自然日為單位的所有用戶訪問次數的累加值。如果通過MapReduce編程實現這個任務,首先要考慮的是,Mapper與Reducer各自的處理邏輯是怎樣的;然後根據處理邏輯編寫出核心代碼;最後在Eclipse中編寫完整代碼,編譯打包後提交給集群運行。
分析思路和邏輯
(1) 輸入/輸出格式。
這裏社交網站用戶的訪問日期在格式上都屬於文本格式,訪問次數為整型數據格式。其組成的鍵值對為<訪問日期,訪問次數>,因此Mapper的輸出與Reducer的輸出都選用Text類與IntWritble類。
(2) Mapper要實現的計算邏輯
Map函數的主要任務是讀取用戶訪問文件中的數據,輸出所有訪問日期與初始次數的鍵值對。<訪問日期,1 >
(3) Reducer要實現的計算邏輯
讀取Mapper輸出的鍵值對<訪問日期,1>,進行累加。
例:user_login.txt訪問日期格式如下:
程序代碼如下:
操作步驟:
1.編寫以下代碼:dailyAccessCount.java,完整內容如下所示。
2.編譯生成dailyAccessCount.jar。
3.上傳dailyAccessCount.jar到Hadoop集群服務器節點。
Hdfs dfs -put /root/hadooptmp/user_login.txt /user/test
4.在Hadoop集群服務器的終端,以hadoop jar命令提交任務。代碼如下
Hadoop jar dailyAccessCount.jar \
/user/root/user_login.txt \
/user/root/AccessCount
實訓要求:
分析以上代碼,按給出的dailyAccessCount.txt程序代碼進行編譯運行。將運行結果截圖在下面
實訓2獲取成績表的最高分記錄
1.訓練要點
(1)掌握MapReduce的執行流程。
(2)掌握基礎的MapReduce程序編寫。
(3)掌握MapReduce程序的輸人輸出格式。
2.需求說明
有一個樣例文件subject_score即成績表A。文件中的每一行數據包含兩個字段,科 目和分數。要求獲取成績列表中每個科目成績最高的記錄,並將結果輸出到最高成績表B.
成績表A的部分內容:
語文 |
73 |
數學 |
97 |
英語 |
21 |
物理 |
72 |
化學 |
49 |
生物 |
69 |
語文 |
106 |
數學 |
112 |
英語 |
38 |
最高成績表B.內容部分內容:
語文 |
99 |
數學 |
149 |
英語 |
122 |
物理 |
143 |
化學 |
120 |
3.實現思路及步驟
(1)在Mapper類中,mapi 兩數資取成績表人中的數據,在技將讀取的數據以空格(參 和服中的格式)分部,級健值對科良源即設發物出健值對類強為 <Text,IntWitable>
(2)在 Reducer中, 由於mp所數輸出健值對為想是Tat hwnhe.所以Reise fnw 針對相同的健(即科目1,遍歷比較它的值 terable AntWiuble 接收的鍵值對是-Tet. henbie 最後輸出健值對科目,最高成績>。 (即成績),找出最高值(即最高成績)。
4.實訓要求:
參考實訓1程序代碼,完成獲取成績表的最高分記錄編程,將代碼復制如下,結果截圖到下面。參考文章:https://blog.csdn.net/meiLin_Ya/article/details/80811698
實訓任務05 MapReduce獲取成績表的最高分記錄