hadoop java.net.URISyntaxException: Relativer Pfad in absoluten URIs: rsrc: hbase-common-0.98.1-hadoop2.jar

Ich habe einen Map-Reduce-Job, der eine Verbindung zu HBASE herstellt, und ich kann nicht herausfinden, wo ich auf diesen Fehler stosse:

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) 

Wenn ich keine Hbase-Bibliotheken habe, läuft der Job einwandfrei. Wo wird der relative Pfad generiert? Wie kann ich die erzeugten Pfade zwingen, absolut zu sein?

In meinem Code habe ich diese zwei Zeilen:

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

wenn ich sie entferne, bin ich in Ordnung, aber der Job tut nicht, was ich tun muss. Ich versuche schließlich, HFILE zu erstellen, um mit HBase-Massenlader zu verwenden.

Umgebung: HBase 0.96.1.2.0.10.0-1-hadoop2 Hadoop 2.2.0.2.0.10.0-1

Vielen Dank im Voraus für jede Hilfe oder statement.

    Die Ausnahme ist ein bisschen irreführend; Es gibt keinen echten relativen Pfad, der analysiert wird. Das Problem hierbei ist, dass Hadoop “Path” in Dateinamen keine “:” unterstützt. In Ihrem Fall wird “rsrc: hbase-common-0.98.1-hadoop2.jar” als “rsrc” interpretiert, was das “Schema” ist, während ich vermute, dass Sie wirklich die Ressourcendatei hinzufügen wollten: /// path / to /your/jarfile/rsrc:hbase-common-0.98.1-hadoop2.jar “. Hier ist eine alte JIRA, die den illegalen Charakter diskutiert:

    https://issues.apache.org/jira/browse/HADOOP-3257

    Beachten Sie, dass Sie diesen absoluten Pfad wahrscheinlich auch nicht verwenden können, da er im Dateinamen immer noch “:” hat. Sie können versuchen, den Dateinamen wie “rsrc% 3Ahbase-common-0.98.1-hadoop2.jar” zu umgehen, aber dann wird es möglicherweise am anderen Ende, wo es verwendet wird, nicht korrekt gefunden.

    Der beste Weg, um dies zu beheben, ist es, die Ursache von “rsrc: hbase-common-0.98.1-hadoop2.jar” zu lösen – die Verwendung von Eclipse zum Erstellen Ihres runnable jar ist wahrscheinlich eine Ursache des Problems. Wenn möglich, versuchen Sie, Ihr Jar mit etwas anderem als Eclipse zu erstellen und sehen Sie, ob das gleiche Problem auftritt; Sie können auch versuchen, “Package required libraries in generated jar” auszuwählen, wenn Sie Ihr jar in Eclipse erstellen.

    Wenn das Uber-jar zu groß wird, können Sie auch versuchen, die ursprünglichen Abhängigkeits-Jars wie hbase-common-0.98.1-hadoop2.jar zusammen mit anderen Abhängigkeiten, die Sie möglicherweise benötigen, in den classnpfad aller Knoten einzufügen Überspringe den Aufruf von “TableMapReduceUtil.addHBaseDependencyJars (conf);”.

    Hier ist ein alter Thread eines anderen Benutzers, der ein ähnliches Problem hat wie das, was Sie sehen:

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