如何运行MRUnit?

时间:2013-01-08 19:06:50

标签: hadoop junit mapreduce

我写了一个MRUnit来测试我的mapper。但是,我不知道如何在Eclipse中运行它,因为它从distributedCache读取一些数据。当我在Eclipse中将它作为普通类运行时,它给了我一堆错误。这些是我收到的错误消息:

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 ....

1 个答案:

答案 0 :(得分:1)

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

使用MRUnit测试依赖于分布式缓存的映射器/缩减器也很棘手,因为0.9.0不支持模拟分布式缓存(如果查看JIRA tickets,则进入1.0.0)。我以前做过这种方法的一种方法是假设使用符号链接你的本地缓存文件,并在我的单元测试设置中将文件复制到本地目录(凌乱但它可以工作)。