Файлы 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 в эту команду.