開發MapReduce程式 實驗2
一、實驗題目
開發MapReduce程式二、實驗要求
WeatherData應用程式是為分析文字檔案、獲得明確結果而編寫的計算程式。 在文字分析過程中,程式分別對(數)值和溫度做了分類和比較。 本次實驗練習,我們將編寫MapReduce程式,目的是找出weather.txt文字檔案中儲存的最高溫度的記錄。三、操作步驟
1.開啟Eclipse,建立一個Java Project,匯入上述實驗中提到的jar包;2.建立“com.letsdobigdata”包,在包下建立“MaxTemparatureMapper”類(可用附件檔案);
3.將MaxTemparatureMapper專案匯出為Jar檔案;
4.啟動Hadoop,複製weather.txt檔案到“/home/wcbdd/data/weather.txt”;
5.訪問localhost:50070,利用檔案選擇器選擇選擇weather.txt;
6.執行MapReduce程式,“bin/hadoop jar/home/wcbdd/data/weatherdata.jar com.letsdobigdata.MaxTemperatureDriver/weather.txt /home/wcbdd/weather1”;
7.開啟瀏覽器檢視輸出結果;
8.複製結果到output.txt;
9.檢視output.txt。
四、實驗結果
然後是reduce部分,負責將map得到的資料整合,並且輸出,在本程式中,就是比較氣溫大小,並輸出最大值。package com.letsdobigdata; import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; public class MaxTemperatureMapper extends Mapper<LongWritable, Text, Text, IntWritable> { private static final int MISSING = 9999; @Override public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); String year = line.substring(15, 19); int airTemperature; if (line.charAt(87) == '+') { // parseInt doesn't like leading plus // signs airTemperature = Integer.parseInt(line.substring(88, 92)); } else { airTemperature = Integer.parseInt(line.substring(87, 92)); } String quality = line.substring(92, 93); if (airTemperature != MISSING && quality.matches("[01459]")) { context.write(new Text(year), new IntWritable(airTemperature)); } } }
最後是drive部分,負責程式的執行,流程控制。package com.letsdobigdata; import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer; public class MaxTemperatureReducer extends Reducer<Text, IntWritable, Text, IntWritable> { @Override public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int maxValue = Integer.MIN_VALUE; for (IntWritable value : values) { maxValue = Math.max(maxValue, value.get()); } context.write(key, new IntWritable(maxValue)); } }
package com.letsdobigdata;
//This is the Driver module, i.e. MaxTemperatureDriver.java,created in the com.letsdobigdata package.
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
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;
/*This class is responsible for running map reduce job*/
public class MaxTemperatureDriver extends Configured implements Tool {
public int run(String[] args) throws Exception {
if (args.length != 2) {
System.err
.println("Usage: MaxTemperatureDriver <input path> <outputpath>");
System.exit(-1);
}
Job job = new Job();
job.setJarByClass(MaxTemperatureDriver.class);
job.setJobName("Max Temperature");
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
job.setMapperClass(MaxTemperatureMapper.class);
job.setReducerClass(MaxTemperatureReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
System.exit(job.waitForCompletion(true) ? 0 : 1);
boolean success = job.waitForCompletion(true);
return success ? 0 : 1;
}
public static void main(String[] args) throws Exception {
MaxTemperatureDriver driver = new MaxTemperatureDriver();
int exitCode = ToolRunner.run(driver, args);
System.exit(exitCode);
}
}
寫好程式後,將程式Export成jar檔案,並且執行。
通過瀏覽器檢視結果:
將檔案從HDFS中匯出:
檢視結果: 可以看到,結果和瀏覽器中的結果是一致的。最熱的一天是1901年,那一天溫度達到了317,這裡的317應該是指開氏度,換算成攝氏度就是43.85,確實很熱。 總結: 這兩次的實驗是告訴我們MapReduce程式的結構是什麼樣的,應該怎樣編寫,編寫後怎樣執行。 我現在有的疑惑就是,這個程式沒法測試啊,要執行,先要Export成jar,那要是寫錯了除錯起來豈不是很麻煩? 但願接下來的學習可以解決我的疑惑。
相關推薦
開發MapReduce程式 實驗2
一、實驗題目 開發MapReduce程式 二、實驗要求 WeatherData應用程式是為分析文字檔案、獲得明確結果而編寫的計算程式。 在文字分析過程中,程式分別對(數)值和溫度做了分類和比較。 本次實驗練習,我們將編寫MapReduce程式,目的是找出weather.tx
使用Visual Studio 2017開發Python程式(2)
建立第一個Hello Word程式 (1)開啟Microsoft Visual Studio 2017,依次單擊頂部工具欄中的“檔案”>“新建” >“專案”命令,彈出“新建專案”對話方塊。在左側模板列表中選擇“Python”選項,在右側選擇“Python應用程式”選項。在下方文字
並行作業3:在eclipse中開發MapReduce程式
在eclipse中開發MapReduce程式 系統採用vm下ubuntu16.04 一、eclipse安裝(參考我的其它部落格) 二、eclipse配置 1、下載hadoop-eclipse-plugin-2.7.3.jar外掛,並將其拖到虛擬機器桌面 2、將其移動到/u
基於Maven使用eclipse開發mapreduce 程式
1.安裝mvn(可以省略)1.1上傳安裝包到linux1.2解壓maven安裝包 mkdir /usr/maven tar -zxvf apache-maven-3.2.1-bin.tar.gz -C /usr/maven1.3新增maven到環境變數 vim /et
2017-2018-2 20165236 實驗四《Android開發基礎》實驗報告
pan and 發表 rda RoCE AS .cn main 博客 2017-2018-2 20165236 實驗四《Android開發基礎》實驗報告 一、實驗報告封面 課程:Java程序設計 班級:1652班 姓名:郭金濤 學號:20
2017-2018-2 20165215 實驗四《Android開發基礎》實驗報告
PE 對齊 ftw src 創建 信息 多個 界面 線性布局 2017-2018-2 20165215 實驗四《Android開發基礎》實驗報告 一、實驗報告封面 課程:Java程序設計 班級:1652班 姓名:張家佳 學號:20165215 指導教師:婁嘉鵬 實驗日期:2
2017-2018-2 20165218 實驗四《Android開發基礎》實驗報告
信息 and 修改 cti 自己的 res 鏈接 學習 main 實驗三 Android開發基礎 課程:java程序設計 姓名:趙冰雨 學號:20165218 指導教師:婁嘉鵬 實驗日期:2018.4.14 實驗內容: 1.基於Android Studio開發簡單的And
2.1顯示程式實驗
2.1.3 實驗內容及說明 一般來說,有很多程式需要顯示輸出提示執行的狀況和結果,有的還需要將 資料區中的內容顯示在螢幕上。本實驗要求將指定資料區的資料以十六進位制數形 式顯示在螢幕上,並利用 DOS 功能呼叫完成一些提示資訊的顯示。通過本實驗, 初步掌握實驗系統配
微機實驗報告2 顯示程式實驗
桂 林 理 工 大 學 實 驗 報 告 班級 軟體工程16-1班 學號 3162052051116 姓名 張識虔 同組實驗者  
從零開始學微信小程式開發---2、小程式專案的建立、相關檔案的作用及小程式IDE
一、建立一個小程式專案 1、下載安裝微信web開發者工具,目前最新版本是1.02.1811141。 2、開啟,掃碼登入, 3、選擇小程式專案 4、點選專案管理旁邊的+ 5、如果你有小程式賬號會有一個APPID,詳情見小程式簡易教程申請賬號那一節,如果還沒有,可以
微信小程式開發入門——請使用2.2.3或以上的基礎庫以使用雲能力
今天下載微信小程式開發工具安裝使用,選擇“建立雲開發快速啟動模板”後,出現了這樣的提示----“請使用2.2.3或以上的基礎庫以使用雲能力”。 查看了官方文件後,解決方案如下: 1、點選選擇“詳情” 2、除錯基礎庫選擇2.2.3或
在myeclipse上連線hadoop-2.8.0 執行mapreduce程式
首先 hadoop叢集是要先搭建的沒的說。 可以先在hadoop上執行自帶的mapreduce jar包,跑一下,不成功說明配置檔案沒有配置好,這裡就不說配置哪些了,網上很多。 1.在windows下下載hadoop-2.8.0.tar.gz 並且解壓 2.下載 &n
hadoop 2.2.0 執行MapReduce程式
環境: 2臺虛擬機器搭建Hadoop環境 系統Fedora 10 Hadoop 2.2.0 準備工作: 1、Hadoop 2.2.0 環境配置執行 2、建立Hdfs的輸入資料夾和輸入檔案: hadoop fs -copyFromLoca
Slog69_實現一個帶引數的雲函式GET!(微信小程式之雲開發-全棧時代2)
ArthurSlog SLog-69 Year·1 Guangzhou·China Sep 11th 2018 禍兮福之所倚 福兮禍之所伏 開發環境MacOS(High Sierra 10.13.5) 需要的資訊和資訊源: 前言 騰訊推出“雲開發”概
關於MapReduce程式開發的一些總結
mapreduce在程式設計的時候,基本上一個固化的模式,沒有太多可靈活改變的地方,除了以下幾處: 1 輸入資料介面:InputFormat FileInputFormat(檔案型別資料讀取的通用抽象類) DBInputFormat (資料庫資料讀取的通用抽象類) 預設使用的
Bmob 開發 Android程式快速入門 2
Bmob 開發 Android程式快速入門 2
MapReduce程式開發元件說明
1、WordCount編碼回顧 MapReduce程式設計涉及的主要元件,如下: InputFormat類:分割成多個splits和每行怎麼解析。 Mapper類:對輸入的每對<key,value>生成中間結果。 Combiner類:在map端,對相同的key進行合併。 Pa
微信小程式(2)-小程式資訊完善以及開發前準備,程式碼稽核與釋出
1.完成註冊後,在微信公眾平臺官網首頁(mp.weixin.qq.com)的登入藉口直接登入 2.完善小程式資訊(完成註冊後,微信小程式資訊完善步驟和開發可同步進行) *選擇對公打款的使用者,完成匯款後,可以補充小程式名稱資訊,上傳小程式影象,填寫小程式介紹並且確定小程式服
10天Hadoop快速突擊(3)——開發MapReduce應用程式
開發MapReduce應用程式一、系統引數的配置1.通過API對相關元件的引數進行配置這些API被分成了一下幾個部分:org.apache.hadoop.conf:定義了系統引數的配置檔案處理APIorg.apache.hadoop.fs:定義了抽象的檔案系統APIorg.a
如何在開發環境中建立mapreduce程式
1. 首先建立開發環境(eclipse-hadoop),網上搭建部落格很多,不細說 2. 開發環境建立之後自己建立一個包,這個名字是隨便起的,可以起名為mapreduce。 3.然後建立一個.java檔案,可以是mapreduce檔案:mapreduce.java。 4.把