Hadoop 如何运行MRUnit?

Hadoop 如何运行MRUnit?,hadoop,junit,mapreduce,Hadoop,Junit,Mapreduce,我已经写了一个MRUnit来测试我的映射器。然而,我不知道如何在Eclipse中运行它,因为它从distributedCache读取一些数据。当我在Eclipse中将其作为普通类运行时,它会给我带来一系列错误。以下是我收到的错误消息: java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at org.apache.hadoop.mrunit.TestDriver.<clinit>(Test

我已经写了一个MRUnit来测试我的映射器。然而,我不知道如何在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 ....
java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory
位于org.apache.hadoop.mrunit.TestDriver(TestDriver.java:38)
在MapperCombinerReducerTester.setUp(MapperCombinerReducerTester.java:16)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在

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

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