Hadoop在avro工具concat上给出错误

时间:2016-06-03 05:50:55

标签: hadoop avro

我正在尝试使用av​​ro工具连接HDFS目录中的多个avro文件。我正在按照this问题来处理这种方法。但是,我收到以下错误:

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正在检查文件的本地文件系统(目录?)并导致错误。有什么指针吗?

1 个答案:

答案 0 :(得分:0)

尝试使用Avro 1.7.5或更高版本,或在参数前加上“hdfs://”。

有关详细信息,请参阅https://issues.apache.org/jira/browse/AVRO-867

基本上,AVRO-867重写了avro-tools用来处理文件系统的实用方法。它们现在按预期工作,即。不再需要hdfs://前缀并支持任何文件系统。