MRUnit μΌλ‘ MultipleOutputs λ₯Ό μ¬μ©νλ M/R ν
μ€νΈ μ½λ μμ±νκΈ°
MRUnit 1.0.0 λ²μ μμλ MultipleOutputs λ₯Ό μ¬μ©ν M/R μ½λλ₯Ό ν
μ€ν μ μλ κΈ°λ₯μ΄ μ 곡λμ§ μλλ€. νμ§λ§ μ΄μ κ΄λ ¨λ μ΄μ MRUnit-13 λ₯Ό μ΄ν΄λ³΄λ©΄ κΈ°λ₯ μΆκ°κ° μλ£λμκ³ , λ€μ λ²μ (1.1.0)μ μΆκ°λμ΄ λμ¬ κ²μ΄λΌλ κ±Έ μ μ μλ€.
νμ§λ§, λΉμ₯ Unit test λ₯Ό μμ±νκ³ κ²μ¦νλλ° μ΄μ©ν΄μΌ νλ μν©μ΄λΌλ©΄ κ°λ° μ€μΈ λ²μ μ λ°μ μ¬μ©ν΄λ³Ό μ μλ€.
MRUnit μ€μΉ μ νκ²½ ꡬμΆ
νλ‘μ νΈ λΉλ νκ²½μ Mac OS X 10.9 Mavericks μ΄λ©°, Maven 2 μ Java 7 μ μ΄μ©νλ€.
Maven 2 μ€μΉ (Maven 3 μΌλ‘λ λΉλκ° λμ§ μμμ)
http://www.oracle.com/technetwork/java/javase/downloads/index.html
μμ‘΄μ±μ κ°μ§ λΌμ΄λΈλ¬λ¦¬ (Maven Repository)
hadoop-mapreduce-client-core 2.3.0
powermock-api-mockito 1.5.1
powermock-module-junit4 1.5.1
powermock-module-junit4-common 1.5.1
SOURCE AND GUIDE νμ΄μ§ μ°Έμ‘°.
μ μ₯μμμ μ΅μ μμ€ μ½λ λ€μ΄λ‘λ
$ git clone http://git-wip-us.apache.org/repos/asf/mrunit.git
Maven μ μ΄μ©ν΄ νλ‘μ νΈ λΉλ
$ mvn package -Dhadoop.version=2 -Drat.numUnapprovedLic enses=128
λΉλμ μ±κ³΅νλ©΄ target λλ ν 리 λ°μμ mrunit-1.2.0-SNAPSHOT-hadoop2.jar νμΌμ μ°Ύμ μ μλ€. (λ²μ μ 보λ λ¬λΌμ§ μ μμ)
Unit test λ₯Ό μμ±ν λ mrunit/src/test λ°μ μλ μ½λλ₯Ό μ°Έμ‘°νλ€. (MultipleOutputs μ λν ν
μ€νΈλ test/java/org/apache/hadoop/mrunit/mapreduce/TestMultipleOutput.java μ°Έμ‘°)
@RunWith(PowerMockRunner.class) @PrepareForTest({MultipleOutputs.class, MyMap.class}) public class TestMyMap { private MapDriver<LongWritable, Text, Text, IntWritable> mapDriver; ... @Test public void testMyMapWithMultipleOutputs() throws Exception { mapDriver = MapDriver.newMapDriver(new MyMap()); mapDriver.withInput(new LongWritable(0), new Text("first")); mapDriver.withMultiOutput("OUT1", new Text("first"), new IntWritable(1)); mapDriver.runTest(); } ... }
@PrepareForTest() μμ MultipleOutputs ν΄λμ€μ ν
μ€νΈνκ³ μ νλ Mapper, Reducer λ₯Ό λͺ
μν΄λλ€.
withMultiOutput() λ©μλλ₯Ό μ΄μ©ν΄ MultipleOutputs λ‘ μΆλ ₯νλ Mapper/Reducer ν
μ€νΈ μ½λλ₯Ό μμ±νλ€. 첫 λ²μ§Έ μΈμμλ NamedOutput μ μ¬μ©ν μ΄λ¦μ λκ²¨μ£Όκ³ , λ λ²μ§Έμ μΈ λ²μ§Έ μΈμμλ κ²°κ³Όλ‘ μμλλ Key/Value λ₯Ό λ겨μ€λ€.