我只有mapper类可以创建文件以便批量加载到hbase中,并且我已经为单元测试编写了一个mrunit。
虽然预期结果和重新运行的结果相同,但mrunit失败,并显示消息“missing expected output”。
预期产量: (4b 65 79 31, {"totalColumns":1,"families":{"default":[{"timestamp":9223372036854775807,"qualifier":"default","vlen":6}]},"row":"Key1"})
实际输出: (4b 65 79 31, {"totalColumns":1,"families":{"default":[{"timestamp":9223372036854775807,"qualifier":"default","vlen":6}]},"row":"Key1"})
我哪里出错了?immutablebyteswritable或put有问题吗?
2条答案
按热度按时间iklwldmw1#
所以你的失败是mrunit使用
equals
以及hashCode
用于比较预期输出对象和实际输出对象的对象的方法(在org.apache.hadoop.mrunit.TestDriver.buildPositionMap(List<Pair<K2, V2>>)
方法):immutablebyteswritable-实现
equals
以及hashCode
方法put-不实现
equals
或者hashCode
方法所以问题的根源就是看跌期权。解决这个问题的唯一方法是手动检查驱动程序输出(使用驱动程序
run
方法而不是runTest
)并将结果列表与使用对象所期望的结果进行比较compareTo
方法(这两个类都存在)。wswtfjt72#
我遇到了这个问题,并通过为key和value设置一个比较器来解决它。下面是字节可写值的代码。