【发布时间】:2014-02-24 15:06:19
【问题描述】:
如何对 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();
}
}
产生这个输出:
类 org.bson.BasicBSONObject 的 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) ...
【问题讨论】:
-
尝试将 BSONObject 转换为 BSONWritable
-
你能解决你的问题吗?我目前面临同样的问题。我猜@Archit 评论不起作用,因为 BSONObject 是您的输入,而不是输出
-
不,很遗憾没有。我们决定放弃 hadoop。 :)
-
出于好奇,你切换到了哪个框架?
-
@Archit : mongodb + amazon redshift 中的计数器文档以及来自 rabbitmq 的一些爱。所以这是一个混合体。
标签: java mongodb hadoop mrunit