Как вы фильтруете файлы s3 перед отправкой ввода в mrjob mapper?

Я пытаюсь обработать журналы MapReduce и хочу отфильтровать все журналы в корзине по имени файла перед их обработкой в ​​EMR. Кроме того, некоторые файлы являются каталогами tar, и я бы хотел, чтобы mrjob распаковал их, а затем отфильтровал файлы в нем, чтобы анализировать только соответствующий файл.

Есть идеи, как отфильтровать корзину s3 по имени файла из MrJob? Я нашел mapper_pre_filter! метод, но он только фильтрует ввод построчно.


person Adrien Lemaire    schedule 11.06.2014    source источник
comment
Я не уверен в фильтрации файлов, но вы можете использовать задание s3distcp для фильтрации и перемещения необходимых файлов в определенную корзину.   -  person mr0re1    schedule 16.06.2014


Ответы (1)


Здесь есть несколько возможностей.

  • Когда вы запускаете задание в MRjob, вы можете указать файлы для ввода в командной строке. Если вы хотите запускать только файлы .json, вы можете сделать это, указав .json, или если вы хотите запускать все, начиная с Logs6-24-14 и заканчивая .txt, вы указываете Logs6-24-14. .txt

  • Кроме того, вы можете передать нужные файлы в качестве данных; это включает в себя каналы unix и может быть невероятно мощным.

  • Наконец, и, возможно, наиболее гибко, вы можете написать код Python в файле MRjob, который запускается перед фактическим заданием, которое выполняет предварительную обработку данных. Вы могли бы сделать почти все, что угодно таким образом. Это вошло бы в код здесь:

if __name__ == '__main__':
    Arbitrary_code_function.run()
    MRJOB_Jobname.run()
person David Manheim    schedule 24.06.2014