使用avro-tools的Concat Avro文件

时间:2016-01-18 14:15:39

标签: hadoop hdfs avro avro-tools

我试图将avro文件合并到一个大文件中,问题是concat命令不接受通配符

hadoop jar avro-tools.jar concat /input/part* /output/bigfile.avro

我明白了:

  

线程中的异常" main" java.io.FileNotFoundException:文件有   不存在:/ input / part *

我尝试使用""'',但没有机会。

2 个答案:

答案 0 :(得分:10)

我很快检查了Avro的源代码(1.7.7),看来concat不支持glob模式(基本上,除最后一个参数外,他们在每个参数上调用FileSystem.open()。)

这意味着您必须明确提供所有文件名作为参数。这很麻烦,但是下面的命令应该做你想要的:

IN=$(hadoop fs -ls /input/part* | awk '{printf "%s ", $NF}')
hadoop jar avro-tools.jar concat ${IN} /output/bigfile.avro

在此命令中添加对glob模式的支持将是一个很好的补充。

答案 1 :(得分:1)

一个人可以运行hadoop jar avro-tools.jar来代替java -jar avro-tools.jar,因为您不需要hadoop来执行此操作。