我试图将avro文件合并成一个大文件,问题是concat命令不接受通配符
hadoop jar avro-tools.jar concat /input/part* /output/bigfile.avro我得到:
线程"main“java.io.FileNotFoundException: File中的异常不存在: /input/part*
我试着使用""和'',但没有机会。
发布于 2016-01-20 11:58:34
我很快地检查了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模式的支持将是一个很好的补充。
发布于 2019-09-11 19:22:43
与hadoop jar avro-tools.jar不同,可以运行java -jar avro-tools.jar,因为此操作不需要hadoop。
https://stackoverflow.com/questions/34856838
复制相似问题