Java 使用MrUnit对Mongo Hadoop作业进行单元测试

Java 使用MrUnit对Mongo Hadoop作业进行单元测试,java,mongodb,hadoop,mrunit,Java,Mongodb,Hadoop,Mrunit,如何对mongo hadoop作业进行单元测试 我迄今为止的努力: public class MapperTest { MapDriver<Object, BSONObject, Text, IntWritable> d; @Before public void setUp() throws IOException { WordMapper mapper = new WordMapper(); d = MapDriver.n

如何对mongo hadoop作业进行单元测试

我迄今为止的努力:

public class MapperTest {

    MapDriver<Object, BSONObject, Text, IntWritable> d;

    @Before
    public void setUp() throws IOException {
        WordMapper mapper = new WordMapper();
        d = MapDriver.newMapDriver(mapper);
    }

    @Test
    public void testMapper() throws IOException {

        BSONObject doc = new BasicBSONObject("sentence", "Two words");
        d.withInput(new Text("anykey"), doc );

        d.withOutput(new Text("Two"), new IntWritable(1));
        d.withOutput(new Text("words"), new IntWritable(1));

        d.runTest();
    }
}
公共类映射测试{
地图驱动程序d;
@以前
public void setUp()引发IOException{
WordMapper映射器=新的WordMapper();
d=映射驱动程序。新映射驱动程序(映射程序);
}
@试验
public void testMapper()引发IOException{
BSONObject doc=新的基本BSONObject(“句子”、“两个词”);
d、 输入(新文本(“任意键”)、文档;
d、 withOutput(新文本(“两”),新的IntWritable(1));
d、 带输出(新文本(“文字”)、新可写(1));
d、 runTest();
}
}
这将产生以下输出:

在类org.bson.basicbonObject的io.serializations中,没有在conf中实现序列化的适用类

java.lang.IllegalStateException 位于org.apache.hadoop.mrunit.internal.io.Serialization.copy(Serialization.java:67) 位于org.apache.hadoop.mrunit.internal.io.Serialization.copy(Serialization.java:91) 位于org.apache.hadoop.mrunit.internal.io.Serialization.copyWithConf(Serialization.java:104) 位于org.apache.hadoop.mrunit.TestDriver.copy(TestDriver.java:608) 位于org.apache.hadoop.mrunit.TestDriver.copyPair(TestDriver.java:612) 位于org.apache.hadoop.mrunit.MapDriverBase.addInput(MapDriverBase.java:118) 位于org.apache.hadoop.mrunit.MapDriverBase.withInput(MapDriverBase.java:207)
…您需要设置序列化程序。 示例:mapDriver.getConfiguration().SetString(“io.serializations”, “org.apache.hadoop.io.serializer.WritableSerialization”,MongoSerDe.class.getName()

MongoSerDe src:


但是在使用这个(MongoSerDe)时,我会遇到错误“org.bson.io.BasicOutputBuffer.pipe(Ljava/io/DataOutput;)I”。

尝试将BSONObject转换为bsonwriteable您能解决问题吗?我现在面临着同样的问题。我猜@Archit comment不起作用,因为BSONObject是您的输入,而不是输出no,不幸的是不是。我们决定放弃hadoop出于好奇,您切换到了哪个框架?@Archit:counter mongodb+amazon redshift中的文档以及rabbitmq的一些爱。因此,这是一种混合。