common-0.98.1-hadoop2.jar

omqzjyyz  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(311)

我有一个连接到hbase的map reduce作业,我无法确定在何处遇到此错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: rsrc:hbase-common-0.98.1-hadoop2.jar
        at org.apache.hadoop.fs.Path.initialize(Path.java:206)
        at org.apache.hadoop.fs.Path.<init>(Path.java:172)
        at org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.findOrCreateJar(TableMapReduceUtil.java:703)
        at org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.addDependencyJars(TableMapReduceUtil.java:656)
        at org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.addHBaseDependencyJars(TableMapReduceUtil.java:573)
        at org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.addDependencyJars(TableMapReduceUtil.java:617)
        at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.configureIncrementalLoad(HFileOutputFormat2.java:398)
        at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.configureIncrementalLoad(HFileOutputFormat2.java:356)
        at com.ancestry.bigtree.hfile.JsonToHFileDriver.run(JsonToHFileDriver.java:117)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at com.ancestry.bigtree.hfile.JsonToHFileDriver.main(JsonToHFileDriver.java:69)
        ... 10 more
Caused by: java.net.URISyntaxException: Relative path in absolute URI: rsrc:hbase-common-0.98.1-hadoop2.jar
        at java.net.URI.checkPath(URI.java:1804)
        at java.net.URI.<init>(URI.java:752)
        at org.apache.hadoop.fs.Path.initialize(Path.java:203)

如果我没有hbase库,那么作业运行正常。在哪里生成相对路径?如何强制生成的路径为绝对路径?
在我的代码中有两行:
tablemapreduceutil.addhbasedependencyjars(conf);hfileoutputformat2.configureincrementalload(作业,htable);
如果我删除他们,我是好的,但工作没有做我需要它做的。我最终尝试创建与hbase bulkloader一起使用的hfile。
环境:hbase 0.96.1.2.0.10.0-1-hadoop2 hadoop2.2.0.2.0.10.0-1
提前感谢您的帮助或指导。

vwkv1x7d

vwkv1x7d1#

这个例外有点误导;没有真正的相对路径被解析,这里的问题是hadoop“path”不支持文件名中的“:”。就你而言rsrc:hbase-common-0.98.1-hadoop2.jar”被解释为“rsrc”是“scheme”,而我怀疑您确实打算将资源文件:///path/添加到/your/jarfile/rsrc:hbase-common-0.98.1-hadoop2.jar". 这里有一个老吉拉在讨论非法角色:
https://issues.apache.org/jira/browse/hadoop-3257
请注意,您可能也无法使用该绝对路径,因为它的文件名中仍然有“:”。您可以尝试转义文件名,如“rsrc%3ahbase-common-0.98.1-hadoop2.jar”,但在使用它的另一端也可能找不到正确的文件名。
解决这一问题的最好办法是解决问题的根本原因rsrc:hbase-common-0.98.1-hadoop2.jar“被引入——使用eclipse构建可运行的jar可能是问题的一个原因。如果可能的话,试着用eclipse以外的东西来构建jar,看看是否发生了同样的问题;在eclipse中创建jar时,还可以尝试选择“将所需库打包到生成的jar中”。
如果uber jar最终太大,您也可以尝试将hbase-common-0.98.1-hadoop2.jar之类的原始依赖jar与您可能需要的任何其他依赖项一起放置到所有节点的类路径中,然后跳过对“tablemapreduceutil.addhbasedependencyjars(conf);”的调用。
下面是另一个用户遇到与您看到的问题类似的旧线程:
http://lucene.472066.n3.nabble.com/error-while-running-mapr-program-on-multinode-configuration-td4053610.html

相关问题