Файлы Concat Avro с использованием avro-tools

Im пытается объединить файлы avro в один большой файл, проблема в concat команда не воспринимает подстановочные

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

Я:

исключение в потоке" main " java.Ио.FileNotFoundException: файл делает не существует: / input / part*

Я пытался использовать "" и '' но никаких шансов.

1 ответов


я быстро проверил исходный код 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 в эту команду.