Потоковое Python: как сократить до нескольких выходов? (Хотя это возможно с Java) - PullRequest
5 голосов
/ 29 сентября 2011

Я прочитал Hadoop в действии и обнаружил, что в Java с использованием классов MultipleOutputFormat и MultipleOutputs мы можем сократить данные до нескольких файлов, но я не уверен, как добиться того жевещь, использующая Python streaming.

например:

                  / out1/part-0000
mapper -> reducer   
                  \ out2/part-0000

Если кто-нибудь знает, слышал, сделал нечто подобное, пожалуйста, дайте мне знать

1 Ответ

2 голосов
/ 29 сентября 2011

Dumbo Feathers , набор java-классов для использования вместе с Dumbo (библиотека python, облегчающая написание эффективных программ Python M / R для hadoop), делает это в выходных классах .

В основном, в вашем задании Python dumbo M / R вы выводите ключ, который является кортежем из двух элементов: первый элемент - это имя каталога для вывода, а второй элемент - фактический ключ. Выбранный класс вывода затем проверяет кортеж, чтобы найти, какой каталог вывода использовать, и использует MultipleOutputFormat для записи в различные подкаталоги.

С dumbo это легко благодаря использованию typedbytes в качестве выходного формата, но я думаю, что это должно быть выполнимо, даже если у вас есть другие выходные форматы.

...