我只有映射器类可以创建用于批量加载到 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 有问题吗?
最佳答案
所以你的失败是因为 MRUnit 正在使用对象的 equals
和 hashCode
方法来比较预期和实际输出对象(在 org.apache.hadoop.mrunit.TestDriver.buildPositionMap(List<Pair<K2, V2>>)
方法中使用了 HashMap):
equals
和 hashCode
方法 equals
或 hashCode
方法 所以 Put 是导致问题的原因。解决此问题的唯一方法是手动检查驱动程序输出(使用驱动程序
run
方法而不是 runTest
)并将结果 List 与使用对象 compareTo
方法(这两个类都存在)进行比较。关于hadoop - MRUnit - 未按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14851733/