Несколько файлов в качестве входных данных для Amazon Elastic MapReduce

Я пытаюсь запустить задание на Elastic MapReduce (EMR) с пользовательским банком. Я пытаюсь обработать около 1000 файлов в одном каталоге. Когда я отправляю свою работу с параметром s3n://bucketname/compressed/*.xml.gz, я получаю сообщение об ошибке "совпало 0 файлов". Если я передаю только абсолютный путь к файлу (например, s3n://bucketname/compressed/00001.xml.gz), он работает нормально, но обрабатывается только один файл. Я попытался использовать имя каталога (s3n://bucketname/compressed/), надеясь, что файлы внутри будут обработаны, но это просто передает каталог заданию.

В то же время у меня есть небольшая локальная установка Hadoop. В этом случае, когда я передаю свою работу с подстановочными знаками (/path/to/dir/on/hdfs/*.xml.gz), она работает нормально, и все 1000 файлов перечислены правильно.

Как заставить EMR отображать все мои файлы?


person Shashank Agarwal    schedule 20.07.2011    source источник
comment
В качестве альтернативы, как мне вывести список файлов в каталоге в s3 из кода? Затем я могу сгенерировать пути из этих файлов.   -  person Shashank Agarwal    schedule 20.07.2011
comment
Теперь это работает! В том же сегменте был пустой файл с именем compressed. Как только я удалил пустой файл, программа заработала.   -  person Shashank Agarwal    schedule 21.07.2011


Ответы (1)


Я не знаю, как EMR перечисляет все файлы, но вот фрагмент кода, который работает для меня:

        FileSystem fs = FileSystem.get(URI.create(args[0]), job.getConfiguration());
        FileStatus[] files = fs.listStatus(new Path(args[0]));
        for(FileStatus sfs:files){
            FileInputFormat.addInputPath(job, sfs.getPath());
        }

В нем будут перечислены все файлы, которые находятся во входном каталоге, и вы можете делать с ними все, что захотите.

person Arsen Zahray    schedule 28.09.2011
comment
Спасибо за ответ. Проблема была устранена позже. В том же ведре был пустой файл, называемый сжатым. Как только я удалил пустой файл, программа заработала. - person Shashank Agarwal; 07.10.2011