2010-12-08 8 views
3

Je dois implémenter une source d'entrée personnalisée (service) pour une application Hadoop MapReduce. Je google'd et SO'd et a constaté qu'une manière de procéder est d'implémenter un InputFormat personnalisé. Est-ce exact?Hadoop MapReduce InputFormat obsolète?

Apparemment selon http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/mapred/InputFormat.html Les méthodes d'InputFormat getRecordReader() et getSplits() sont obsolètes. Quel est le remplacement?

l'exemple WordCount de Hadoop utilise toujours la même ...

+0

Votre problème est réellement entre les versions. Une grande partie du problème avec '0.20.2' (la dernière version stable) est qu'il déprécie explicitement la fonctionnalité sans remplacement intra-version. Tel est le cas avec 'MultipleOutputs' et presque la totalité de' org.apache.hadoop.mapred'. Cela semble indiquer une restructuration majeure de l'API, que j'ai suivie. (Réponse à venir, une fois que je compile suffisamment d'informations sur la source.) – MrGomez

Répondre

2

De the documentation:

Interfaces désapprouvées

...

org.apache.hadoop.mapred.InputFormat

Utiliser InputFormat inste un d.

...

En raison du comportement de dévalorisation bizarre avec suggestion 0.20.2 et encore plus étrange d'utiliser une implémentation après désapprouver une interface, je creusé un peu plus profond. Cette interface est toujours présente dans 0.21.0, avec la balise deprecation supprimée. Je ne pouvais pas trouver une interface comparable dans le coffre au moment de cette écriture.

+0

Merci, j'ai implémenté un InputFormat personnalisé et je suis content de savoir que 0.21.0 le "désapprouve". : D – Sri

+0

@Srirangan Content de vous aider! – MrGomez

5

Bien que Hadoop utilise toujours des éléments du package mapred en interne, du point de vue de l'utilisateur, ils devraient être considérés comme obsolètes. Hadoop manque énormément en matière de documentation et leurs exemples sont tous dépassés. Heureusement, quand vous êtes vraiment bloqué, il y a toujours stackoverflow

+0

+1 perspicace. Le manque de documentation et une API _consistent_ sont plutôt frustrants. – MrGomez

4

Ce qui s'est passé est que, dans 0.20, ils ont désapprouvé les classes mapred et ont introduit une nouvelle API. Cependant, la nouvelle API manquait de quelques fonctionnalités de base, et donc l'ancienne API était "non déconseillée" dans la dernière version. Il est conseillé d'utiliser l'ancienne API car il est fort probable que ce soit celle qui est là pour rester.

Questions connexes