0

I've written an MRUnit to test my mapper. However, I don't know how to run it in Eclipse as it reads some data from distributedCache. When I run it as a normal class in Eclipse it give me a bunch of errors. These are the error messages I get:

java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.apache.hadoop.mrunit.TestDriver.<clinit>(TestDriver.java:38)
    at MapperCombinerReducerTester.setUp(MapperCombinerReducerTester.java:16)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at ....
4

1 回答 1

1

您的错误与不在类路径上的依赖库(commons-logging)有关。您是在使用 Maven(与 m2e 结合)来管理您的项目依赖项,还是在 Eclipse 中使用直接的 Java 项目?

使用 MRUnit 测试依赖于分布式缓存的映射器/减速器也很棘手,因为 0.9.0 不支持模拟分布式缓存(如果您查看JIRA 票证,则在 1.0.0 中提供)。我之前这样做的一种方法是假设使用符号链接本地缓存文件,并在我的单元测试设置中将文件复制到本地目录(混乱但它有效)。

于 2013-01-09T03:07:51.897 回答