用MRUnit對MapReduce程序進行單元測試 單元測試工具
很多人都為調試MapReduce程序感到頭疼,因此有人貢獻了MRUnit,專門進行MapReduce程序測試的工具。最新的hadoop-0.20已經包含這個工具,CloudEra甚至將他backport到0.18.x的發布中來。 MRUnit的使用方法非常簡單,只要確定輸入和期望的輸出,剩下的工作交給MapDriver和ReduceDriver就okay了。下面以最簡單的IdentityMapper和IdentityReducer做例子, 他們都是將輸入直接傳遞給輸出,不做任何的修改。 import junit.framework.TestCase; import java.util.List; import java.util.LinkedList; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.Mapper; import org.apache.hadoop.mapred.lib.IdentityMapper; import org.apache.hadoop.mapred.Reducer; import org.apache.hadoop.mapred.lib.IdentityReducer; import org.apache.hadoop.mrunit.MapDriver; import org.apache.hadoop.mrunit.ReduceDriver; import org.apache.hadoop.mrunit.types.Pair; import org.junit.Before; import org.junit.Test; public class TestExample extends TestCase { private Mapper mapper; private Reducer reducer; private MapDriver mapDriver; private ReduceDriver reduceDriver; @Before public void setUp() { mapper = new IdentityMapper(); reducer = new IdentityReducer(); mapDriver = new MapDriver(mapper); reduceDriver = new ReduceDriver(reducer); } @Test public void testIdentityMapper() { List> res; mapDriver.setInput(new Text(“key”), new Text(“keyword1″)); mapDriver.addOutput(new Text(“key”), new Text(“keyword1″)); mapDriver.runTest(); } @Test public void testIdentityReducer() { List> res; List input = new LinkedList(); input.add(new Text(“keyword1″)); input.add(new Text(“keyword2″)); reduceDriver.setInput(new Text(“key”), input); reduceDriver.addOutput(new Text(“key”), new Text(“keyword1″)); reduceDriver.addOutput(new Text(“key”), new Text(“keyword2″)); reduceDriver.runTest(); } }
文章來源于領測軟件測試網 http://www.kjueaiud.com/