У меня есть задание mapreduce, роль которого состоит в том, чтобы разбить мой входной файл на два файла в соответствии с заданным критерием.В настоящее время я использую Hadoop r0.20.203, потому что это текущая стабильная версия
Эта версия предлагает два API:
Как вы можете себе представить, я использую новый API, и моя проблема в том, что Hadoop r0.20.203 не предлагает никаких форматов MultipleOutput
в новом API.
Hadoop 0.20.203 все еще предлагает MultipleTextOutputFormat
и MultipleTextOutputs
(которые подходят для моего случая) в старом API .Более того, более новый Hadoop 0.22 предлагает MultipleOutputs
в новом API.
Я вижу четыре решения моей проблемы:
- Переключитесь на Hadoop 0.22.Проблема с этим решением состоит в том, что версия не может быть развернута на кластерах, которые я использую, из-за своего бета-статуса.
- Используйте старый API для этого конкретного задания и новый для других.Я видел, что старый API в Hadoop 1.0.0 не устарел, так что его все еще можно использовать?Если позже мне потребуется перейти на более новую версию Hadoop, мне нужно будет переписать только эту работу.
- Используйте старый API для всех моих заданий, чтобы избежать проблем совместимости / согласованности.Как вы думаете, это может повредить развитию моей программы?Особенно, если мне нужно переключиться на более новую версию Hadoop позже.
- Забудьте о нескольких выходах и найдите другое решение.
Что бы вы сделали, если бы вы были мной?