Написание одной карты Hadoop уменьшает вывод в несколько объектов S3 - PullRequest
1 голос
/ 04 декабря 2009

Я реализую работу Hadoop Map, которая должна создавать выходные данные в нескольких объектах S3. Сам Hadoop создает только один выходной файл (объект S3), но мне нужно разделить вывод на несколько файлов.

Как мне этого добиться?

Ответы [ 2 ]

3 голосов
/ 08 декабря 2009

Я сделал это, просто записав вывод непосредственно из моего метода редуктора в S3, используя инструментарий S3. Поскольку я работал на EC2, это было быстро и бесплатно.

В общем, вы хотите, чтобы Hadoop максимально обрабатывал ваш ввод и вывод для чистых картографов и редукторов; и, конечно, вы хотите писать в S3 в самом конце вашего конвейера, чтобы позволить движению кода Hadoop выполнять свою работу над HDFS.

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

Мне нужно было записать в S3 код моего редуктора, потому что файловые системы S3 / S3n не были зрелыми; теперь они могут работать лучше.

0 голосов
/ 08 декабря 2009

Знаете ли вы также MultipleOutputFormat? Он не относится к S3, но в целом он позволяет записывать выходные данные в несколько файлов, реализуя данную логику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...