hadoop java.net.URISyntaxException:绝对URI中的相对路径:rsrc:hbase-common-0.98.1-hadoop2.jar

 多米音乐_35547384 发布于 2022-12-27 16:22

我有一个连接到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.(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.(URI.java:752)
        at org.apache.hadoop.fs.Path.initialize(Path.java:203)

如果我没有Hbase库,那么工作运行正常.生成的相对路径在哪里?如何强制生成的路径是绝对的?

在我的代码中,我有这两行:

TableMapReduceUtil.addHBaseDependencyJars(CONF); HFileOutputFormat2.configureIncrementalLoad(job,htable);

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

环境:HBase 0.96.1.2.0.10.0-1-hadoop2 Hadoop 2.2.0.2.0.10.0-1

提前感谢您的任何帮助或指导.

1 个回答
  • 例外有点误导; 没有真正的相对路径被解析,这里的问题是Hadoop"Path"不支持文件名中的':'.在你的情况下,"rsrc:hbase-common-0.98.1-hadoop2.jar"被解释为"rsrc"是"方案",而我怀疑你真的打算添加资源文件:/// path/to /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时,您也可以尝试选择"将所需的库打包到生成的jar中".

    如果uber-jar结尾太大,你也可以尝试将原始的依赖jars(如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

    2022-12-27 16:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有