Pour créer des travaux MapReduce, vous pouvez soit utiliser l'ancienne méthode org.apache.hadoop.mapred
ou le paquet plus récent org.apache.hadoop.mapreduce
paquet pour Mappers et Reducers, Jobs ... Le premier avait été marqué comme déprécié mais il a été annulé entre-temps. Je me demande maintenant s'il est préférable d'utiliser l'ancien paquet mapred ou le nouveau paquet mapreduce pour créer un job et pourquoi. Ou est-ce que cela dépend simplement du fait que vous ayez besoin de choses comme le MultipleTextOutputFormat qui n'est disponible que dans l'ancien paquet mapred ?
Réponses
Trop de publicités?Sur le plan fonctionnel, il n'y a pas beaucoup de différence entre l'ancienne version ( o.a.h.mapred
) et le nouveau ( o.a.h.mapreduce
) API. La seule différence significative est que les enregistrements sont poussés vers le mappeur/réducteur dans l'ancienne API. Alors que la nouvelle API prend en charge les mécanismes pull/push. Vous pouvez obtenir plus d'informations sur le mécanisme pull aquí .
De plus, l'ancienne API a été non déprécié depuis la version 0.21. Vous pouvez trouver plus d'informations sur la nouvelle API aquí .
Comme vous l'avez mentionné, certaines classes (comme MultipleTextOutputFormat) n'ont pas été migrées vers la nouvelle API. Pour cette raison et pour la raison mentionnée ci-dessus, il est préférable de s'en tenir à l'ancienne API (bien qu'une traduction soit généralement assez simple).
L'ancienne et la nouvelle API sont toutes deux bonnes. La nouvelle API est cependant plus propre. Utilisez la nouvelle API chaque fois que vous le pouvez, et utilisez l'ancienne lorsque vous avez besoin de classes spécifiques qui ne sont pas présentes dans la nouvelle API (par exemple MultipleTextOutputFormat
)
Mais veillez à ne pas utiliser un mélange des anciennes et des nouvelles API dans le même travail Mapreduce. Cela entraîne des problèmes bizarres.
Ancienne API (mapred)
-
Existe dans le paquet org.apache.hadoop.mapred
-
Fournir une configuration de travail map/reduce.
-
Réduit les valeurs pour une clé donnée, en se basant sur l'Iterator
-
Paquet Résumé
Nouvelle API (mapreduce)
-
Existe dans le paquet org.apache.hadoop.mapreduce
-
La configuration des tâches est faite par une classe séparée, appelée JobConf, qui est une extension de Configuration.
Classe -
Réduit les valeurs pour une clé donnée, sur la base de l'Iterable