2016-06-03 1 views
0

Я пытаюсь объединить несколько файлов avro в HDFS-каталоге, используя инструменты avro. Я следую за этим вопросом, как вопрос this. Тем не менее, я получаю следующее сообщение об ошибке:Ошибка Hadoop на инструментах avro 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) 
  • каталог /user/myuser/output/ действительно существует.

  • Команда я использую hadoop jar /home/myuser/avro-tools-1.7.4.jar concat ${IN} /user/myuser/output/output.avro

  • $IN имеет значение /user/hive/warehouse/somedatabase.db/some_table/on_date=2016-05-01/for_date=2016-05-08/confidence=0.8/000000_0

  • версия Hadoop является Hadoop 2.0.0-cdh4.7.0.

Теоретически, он должен работать, однако это не так. Мне кажется, что avro-tools проверяет локальную файловую систему на файл (каталог?) И вызывает ошибку. Любые указатели?

ответ

0

Попробуйте использовать Avro 1.7.5 или новее или префикс вашего аргумента с помощью «hdfs: //».

Для получения более подробной информации см. https://issues.apache.org/jira/browse/AVRO-867.

В основном, AVRO-867 переписал методы утилиты, используемые avro-инструментами для работы с файловой системой. Теперь они работают так, как вы ожидаете, т.е. больше не требуется префикс hdfs: // и поддерживает любую файловую систему.