当我使用自己的TableInputFormat时,TableMapper上出现ClassNotFoundExceptio



我正试图以以下方式为MapReduceJob使用我自己的TableInputFormat

TableMapReduceUtil.initTableMapperJob("mytable", MyScan, MyMapper.class, MyKey.class, MyValue.class, myJob,true, MyTableInputFormat.class);

当我运行作业时,我会得到一个ClassNotFoundException:org.apache.hdoop.hbase.mapreduce.TableMapper——知道为什么吗?

如果我不使用initTableMapperJob的最后两个参数,那么就没有ClassNotFoundException(但显然这违背了目的)

我已经为此挣扎了好几天了。在这里有人做了同样的事情扩展Hadoop';s的TableInputFormat,使用用于分发时间戳键的前缀进行扫描,但我无法在该线程上提问。

我正在使用Hadoop2 开发Cloudera Cluster 4.3.0

添加堆栈跟踪错误:

java.lang.ClassNotFoundException: org.apache.hadoop.hbase.mapreduce.TableMapper at 
java.net.URLClassLoader$1.run(URLClassLoader.java:202) at 
java.security.AccessController.doPrivileged(Native Method) at 
java.net.URLClassLoader.findClass(URLClassLoader.java:190) at 
java.lang.ClassLoader.loadClass(ClassLoader.java:306) at 
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at 
java.lang.ClassLoader.loadClass(ClassLoader.java:247) at 
java.lang.ClassLoader.defineClass1(Native Method) ....

非常感谢您帮助

问候

请参阅覆盖TableMapper拆分。因此,我重写了TableMapReduceUtil,并将TableMapper.class添加到addDependencyJars方法中。然后我以同样的方式继续 MyTableMapReduceUtil.initTableMapperJob("MyTable", // input table myScan, MyMapper.class, MyKey.class, MyValue.class, myJob, true,CustomSplitTableInputFormat.class); 其中CustomSplitTableInputFormat扩展TableInputFormat

相关内容

  • 没有找到相关文章