Ich versuche, eine Hadoop-Anwendung von einem Glas zu laufen:Erste Datei Ressource von Jar in Hadoop
hadoop jar myJarFile.jar my.class.path.Here /path/to/input /path/to/output
In einer der Klassen in myJarFile.jar, ich bin versucht, eine Ressource aus dem Classpath zu lesen so :
public void init() {
Configuration conf = new Configuration();
conf.addResource("resources/myConf.xml");
log.info("Data element=" + conf.get("data.element"));
....
In myJarFile.jar, Ressourcen-/myConf existiert:
[prompt] jar myJarFile.jar
my/class/path/Here.class
...
resources/myConf.xml
und die Konfigurationsdatei enthalten s Das Name/Wert-Paar im richtigen (Hadoop-Stil) Format. Wenn ich jedoch versuche, dies auszuführen, kann die Datei myConf.xml nicht gefunden werden, obwohl sie im Klassenpfad enthalten sein sollte.
Was fehlt mir?
Ich habe versucht, diese, die Datei bekommen, und dann ist es zu AddResource vorbei(). Aber das funktioniert nicht. Ich habe auch versucht, die Ressource in der Job-Setup-Phase zu bekommen (in der Methode run() des Treibers, bevor ich das Job-Objekt eingerichtet habe). Aber keiner von beiden liest die Ressource. –
Korrektur: Ich habe versucht, den Pfad der Datei zu addResource() hinzuzufügen. Sollte die neue File() Zeile eine neue Datei ("resources/myConf.xml") sein? Was übermittele ich an die Zeile addResource()? –
Nur neugierig, warum versuchen Sie eine Ressource in der Konfiguration in Init-Methode (von Mapper oder Reducer) hinzufügen? – alpeshpandya