You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-user@hadoop.apache.org by Blanca Hernandez <Bl...@willhaben.at> on 2014/09/25 14:09:43 UTC

MRUnit tests with mongo hadoop

Hi!

I am not sure if this question must be posted in the Hadoop forum or in the mongoDB one. Let´s try:

I am using the mongo-hadoop integration and wrote a MR job. I want to test it, and foud the framework MRUnit (https://mrunit.apache.org/), which sounds great.

I am facing some difficulties with it, since apparently there mongoDB classes are not supported by the framework (?).
A simple example:

public class MrUnitBasicTests {

    @Test
    public void testVeryBasicOneAttributeDocument() throws Exception {
        Mapper<Object, BSONObject, BSONObject, BSONObject> mapper = new Mapper<Object, BSONObject, BSONObject, BSONObject>(){
            @SuppressWarnings("unchecked")
            @Override
            protected void map(Object key, BSONObject value, org.apache.hadoop.mapreduce.Mapper.Context context)
                    throws IOException, InterruptedException {
                Object writeKey = createOutputKey();
                Object writeValue = createOutputValue();
                context.write(writeKey, writeValue);
            }
        };
        BSONObject input = new BasicDBObject("key", "value");
//        ParseMetadataAsTextIntoAvroMapper mapper = new ParseMetadataAsTextIntoAvroMapper();
        MapDriver<Object, BSONObject, BSONObject, BSONObject> mapDriver = MapDriver.newMapDriver(mapper);
        mapDriver.withInput(new LongWritable(1), input);
        mapDriver.withOutput(createOutputKey(), createOutputValue());
        mapDriver.runTest();
    }

    private BasicDBObject createOutputKey() {
        return new BasicDBObject("zonid", new ObjectId("5179577adb2da69ad0ee98e9"));
    }

    private BasicDBObject createOutputValue() {
        return new BasicDBObject("key", "value");
    }
}


And the exception:
java.lang.IllegalStateException: No applicable class implementing Serialization in conf at io.serializations for class com.mongodb.BasicDBObject

The io.serializations configuration property contains WritableSerialization which implements org.apache.hadoop.io.serializer.Serialization
I saw that the com.mongodb.BasicDBObject implements the java.io.Serializable.

Is there any connection among them? How could I go on with the tests? Any experience with it?

Many thanks