如何测试包含变异的Reducer

时间:2013-08-30 20:39:49

标签: hadoop mrunit

我正在尝试使用MRUnit,但我见过的所有例子都与我正在尝试的完全匹配。

我的减速器输出了一个关键和突变,但我似乎无法将突变与预期结果进行比较。它将对象显示为相同,但地址为0,并出现以下错误:

junit.framework.AssertionFailedError: expected: <org.apache.accumulo.core.data.Mutation@0> but was <org.apache.accumulo.core.data.Mutation@0>

我正在使用reduceDriver.run()方法,并在我的预期变异对象上尝试使用实际的assertEquals。有什么我想念的吗?

感谢您的任何意见。

3 个答案:

答案 0 :(得分:0)

Mutation没有适当的equals()实现。你最好的选择是比较getUpdates()和getRow()的结果。它们分别返回List和byte [],这些很容易比较。

答案 1 :(得分:0)

Mutation有一个合适的equals()方法,至少在1.4.x行中是这样。但是,该方法调用私有serialize()方法来修改要检查的数据。

我在过去通过将Mutation包装在一个新的Mutation中来解决这个问题,该Mutation调用序列化引擎:

 assertEquals(expectedMutation, new Mutation(actualMutation));

答案 2 :(得分:0)

您可以扩展Mutation并将新类传递给mrunit。只需在新类中重写equals。