【问题标题】:ClassNotFoundException on TableMapper when I use my own TableInputFormat当我使用自己的 TableInputFormat 时,TableMapper 上出现 ClassNotFoundException
【发布时间】:2013-08-02 12:14:34
【问题描述】:

我正在尝试通过以下方式将我自己的 TableInputFormat 用于 MapReduceJob

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

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

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

我现在为此苦苦挣扎了几天。 这是某人在某个地方做了同样的事情Extending Hadoop's TableInputFormat to scan with a prefix used for distribution of timestamp keys,但我无法在该线程上提出问题。

我正在使用 Hadoop 2 开发 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) ....

非常感谢您的帮助

问候

【问题讨论】:

  • 添加堆栈跟踪error: 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) ....

标签: hadoop mapreduce hbase cloudera


【解决方案1】:

请参阅Overriding TableMapper splits。所以我覆盖了 TableMapReduceUtil 并将 TableMapper.class 添加到 addDependencyJars 方法中。然后我以同样的方式进行 MyTableMapReduceUtil.initTableMapperJob("MyTable", // input table myScan, MyMapper.class, MyKey.class, MyValue.class, myJob, true,CustomSplitTableInputFormat.class); CustomSplitTableInputFormat 扩展 TableInputFormat 的地方

【讨论】:

  • 考虑到你已经回答了你的问题,我可以假设你已经解决了你的问题吗?
  • jtheRocker,它不允许我这样做 - 将在 2 天内尝试。谢谢。
猜你喜欢
  • 2017-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 2020-05-17
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多