hadoop java.net.URISyntaxException:绝对URI中的相对路径:rsrc:hbase-co



我有一个连接到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(设计);HFileOutputFormat2。configureIncrementalLoad(工作,htable);

如果我删除它们,我很好,但工作不做我需要它做的事情。我最终试图创建HFILE与hbase bulkloader一起使用。

环境:HBase 0.96.1.2.0.10.0-1-hadoop2Hadoop 2.2.0.2.0.10.0-1

事先感谢您的帮助和指导。

这个例外有点误导人;没有真正的相对路径被解析,这里的问题是Hadoop"路径"不支持文件名中的":"。在您的情况下,"rsrc:hbase-common-0.98.1-hadoop2.jar"被解释为"rsrc"作为"方案",而我怀疑您真的打算将资源文件:///路径/添加到/your/jarfile/rsrc:hbase-common-0.98.1-hadoop2.jar"。这是一个旧的JIRA讨论非法字符:

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时,您也可以尝试选择"Package required libraries into generated jar"。

如果super -jar最终太大,您还可以尝试将原始依赖jar(如hbase-common-0.98.1-hadoop2.jar)与您可能需要的任何其他依赖一起放置到所有节点的类路径中,然后跳过调用"TableMapReduceUtil.addHBaseDependencyJars(conf);"。

下面是另一个用户遇到类似问题的旧线程:

http://lucene.472066.n3.nabble.com/Error-while-running-MapR-program-on-multinode-configuration-td4053610.html

相关内容

  • 没有找到相关文章

最新更新