2016-06-03 5 views
0

Ich versuche, mehrere AVRO-Dateien in einem HDFS-Verzeichnis mit AVRO-Tools zu verketten. Ich folge dem Ansatz als this Frage. Aber ich bin immer folgende Fehlermeldung:Hadoop gibt Fehler auf avro Tools concat

Exception in thread "main" java.io.FileNotFoundException: /user/myuser/output/output.avro (No such file or directory) 
    at java.io.FileOutputStream.open(Native Method) 
    at java.io.FileOutputStream.<init>(FileOutputStream.java:221) 
    at java.io.FileOutputStream.<init>(FileOutputStream.java:171) 
    at org.apache.avro.tool.Util.fileOrStdout(Util.java:79) 
    at org.apache.avro.tool.ConcatTool.run(ConcatTool.java:58) 
    at org.apache.avro.tool.Main.run(Main.java:80) 
    at org.apache.avro.tool.Main.main(Main.java:69) 
    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:208) 
  • Das Verzeichnis /user/myuser/output/ existiert.

  • Der Befehl Ich verwende ist hadoop jar /home/myuser/avro-tools-1.7.4.jar concat ${IN} /user/myuser/output/output.avro

  • $IN den Wert /user/hive/warehouse/somedatabase.db/some_table/on_date=2016-05-01/for_date=2016-05-08/confidence=0.8/000000_0

  • Die hadoop Version ist Hadoop 2.0.0-cdh4.7.0.

Theoretisch sollte es funktionieren, jedoch nicht. Ich habe das Gefühl, dass avro-tools das lokale Dateisystem nach der Datei (Verzeichnis?) Überprüft und das den Fehler verursacht. Irgendwelche Zeiger?

Antwort

0

Versuchen Sie Avro 1.7.5 oder höher zu verwenden oder setzen Sie Ihr Argument mit "hdfs: //" voran.

Weitere Details finden Sie unter https://issues.apache.org/jira/browse/AVRO-867.

Im Grunde hat AVRO-867 die von avro-tools verwendeten Utility-Methoden neu geschrieben, um mit dem Dateisystem umgehen zu können. Sie arbeiten jetzt wie Sie erwarten, dh. Sie benötigen nicht länger das Präfix hdfs: // und unterstützen jedes Dateisystem.