大資料學習筆記(十八)-MRUnit
MapReduce是跑在叢集上的,這就意味著MapReduce的作業很難被除錯。當然可以採用Log輸出的方式來檢視,但是這樣效率很低,也很難定位問題,因為要每次打包,上傳,執行jar包。
所以本地Debug單步除錯非常的重要,除錯的方法是使用MRUnit
在maven中新增MRUnit的依賴
<dependency>
<groupId>org.apache.mrunit</groupId>
<artifactId>mrunit</artifactId>
<version>1.1.0</version>
<classifier>hadoop2</classifier>
<scope>test</scope>
</dependency>
使用MRUnit和使用JUnit的方式很類似,編寫測試類就可以了,給個例子,照搬就行了
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mrunit.mapreduce.MapDriver;
import org.apache.hadoop.mrunit.mapreduce.MapReduceDriver;
import org.apache.hadoop.mrunit.mapreduce.ReduceDriver;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
/**
* Created by yang.liu on 2018/1/5.
*/
public class MRUnitTest {
MapDriver<LongWritable, Text, Text, LongWritable> mapDriver;
ReduceDriver<Text, LongWritable, Text, LongWritable> reduceDriver;
MapReduceDriver<LongWritable, Text, Text, LongWritable, Text, LongWritable> mapReduceDriver;
@Before
public void setUp(){
WordCount.MyMapper mapper = new WordCount.MyMapper();
mapDriver = MapDriver.newMapDriver(mapper);
WordCount.MyReducer reducer = new WordCount.MyReducer();
reduceDriver = ReduceDriver.newReduceDriver(reducer);
mapReduceDriver = MapReduceDriver.newMapReduceDriver(mapper,reducer);
}
@Test
public void testMapper() throws IOException {
mapDriver.withInput(new LongWritable(), new Text("input data");
mapDriver.runTest();
}
}
不過需要注意的是MapDriver,ReduceDriver和MapReduceDriver要和自己定義的MapReduce相一致,否則會出現編譯錯誤。
然後就可以打斷點除錯了。
PS:MapReduce都是對資料的處理,所以單元測試在MapReduce程式的開發中非常的有效。
相關文章
- 大資料學習筆記(四)大資料筆記
- 大資料學習筆記(五)大資料筆記
- 大資料學習筆記(六)大資料筆記
- 大資料學習筆記(十七)-MapReduce大資料筆記
- 大資料學習筆記(十五)-大資料排程框架大資料筆記框架
- 大資料教程分享Actor學習筆記大資料筆記
- 大資料之 Hadoop學習筆記大資料Hadoop筆記
- 大資料學習筆記(十四)-Sqoop大資料筆記OOP
- 電商大資料學習筆記:理論大資料筆記
- 電商大資料學習筆記:實戰大資料筆記
- Redis學習筆記(十八) 叢集(下)Redis筆記
- 大資料學習筆記(十三)-Hive高階大資料筆記Hive
- 資料庫學習筆記資料庫筆記
- Zabbixzabbix_proxy指令(學習筆記二十八)筆記
- 電商大資料學習筆記:使用者畫像大資料筆記
- 大資料學習筆記500條【第一彈】,記得收藏!大資料筆記
- PHP 資料加密 (學習筆記)PHP加密筆記
- MySQL資料庫學習筆記MySql資料庫筆記
- 資料結構學習筆記資料結構筆記
- AS 學習筆記 載入資料筆記
- Kotlin學習筆記(五十八)正規表示式Kotlin筆記
- 大資料學習筆記之十二 雲端計算資源管理大資料筆記
- 資料庫mysql學習筆記記錄資料庫MySql筆記
- 好程式設計師大資料學習路線分享Map學習筆記程式設計師大資料筆記
- 好程式設計師大資料學習路線分享Actor學習筆記程式設計師大資料筆記
- 大資料測試學習筆記之測試工具集大資料筆記
- Redis學習筆記(七) 資料庫Redis筆記資料庫
- 資料結構學習筆記--棧資料結構筆記
- 資料結構學習筆記1資料結構筆記
- 達夢資料庫學習筆記資料庫筆記
- MySQL學習筆記--資料型別MySql筆記資料型別
- python學習筆記:資料庫Python筆記資料庫
- JavaScript學習筆記---資料型別JavaScript筆記資料型別
- 資料庫原理學習筆記——引言資料庫筆記
- 資料倉儲學習筆記(ZT)筆記
- ActionScript 學習筆記(資料互動)筆記
- JavaScript學習筆記(四十八)——Node.js之ExpressJavaScript筆記Node.jsExpress
- angular學習筆記(二十八-附1)-$resource中的資源的方法Angular筆記