在Eclipse开发环境中,派发Mapreduce job到集群的过程中,往往出现自己定义的Map及Reduce类找不到的情况。这个时候可以将工程打成jar包,然后将jar包添加到工程中。这种方法过于繁琐,现只需要在配置job之前通过代码将自己的Map及Reduce类上传到集群即可。代码如下所示:
Method addURL = URLClassLoader.class.getDeclaredMethod("addURL",
new Class[] { URL.class });addURL.setAccessible(true);
URLClassLoader classloader = (URLClassLoader)ClassLoader.getSystemClassLoader();
String url = "file:///home/bi/Desktop/Job.jar"; // 包路径位置
URL classUrl = new URL(url);
addURL.invoke(classloader, new Object[] { classUrl });