J'ai le code suivant et je n'ai pas compris pourquoi Ce que je peux prendre à partir de ce fait: get () code> est utilisé dans la ligne en surbrillance. Si je supprimais que
get () code> méthode, il me jette une erreur.
get () code> méthode renvoie la valeur INT du Intense. Corrigez-moi si je me trompe. P>
3 Réponses :
Afin de gérer les objets de Hadoop Way, Hadoop utilise des classes écrities. Par exemple, Hadoop utilise du texte au lieu de la chaîne de Java. De même, le classe indienne classe Dans Hadoop est similaire à un Java Int, cependant, des interfaces ingiables implémentes telles que comparables, inscriptible et WritribeComparable . P>
Ces interfaces sont toutes nécessaires pour MapReduce; L'interface Interface d'écriture est décrite comme p>
un objet sérialisable qui implémente une simple, efficace,
Protocole de sérialisation, basé sur Votre comparable > est utilisée pour la comparaison lorsque le réducteur trie les touches et
écrit code> peut écrire le résultat sur le disque local. Il n'utilise pas le java
Serializable code> car Java
Serializable code> est trop gros ou trop lourd pour Hadoop,
Enrichissant code> peut sérialiser l'objet Hadoop dans une très lumière manière. p>
Datainput code> et
dataOutput code> p>
blockQuote>
valeurs.next () code> est une classe indigne que vous devez utiliser
get () code> méthode pour obtenir le type primitif de celui-ci. P>
Votre compréhension est correcte. La réponse de Ramprasad G est également correcte (+1), mais simplement pour le rendre plus clair: p>
Ainsi, vous ne pouvez donc pas ajouter un somme code> int.
valeurs code> est un
itérateur code> à
des éléments indirects code>, donc
valse.next () code> est un
ipritable code>. Maintenant,
Inthritable CODE>, un type de données d'Hadoop, n'est pas équivalent au type primitif
int code> de Java, même si elles sont utilisées pour la même chose: stocker des valeurs entières. p>
iwewritable code> à un
int code> (qui est ce que vous faites si vous supprimez la méthode
get () code> méthode). Ils ne sont pas du même type. Vous devez convertir le
iwewritable code> vers un
int code>, qui est effectué par la méthode
get () code>. p>
Merci beaucoup de la vérification !!
Contrairement à Le code source IntJewritable fournit plus de détails pour que vous compreniez mieux le concept. P> int code> et
entier code> Boxe automatique / ONU-BOXING, identique ne fonctionne pas pour
int code> et
indicateur code> .
/** A WritableComparable for ints. */
public class IntWritable implements WritableComparable {
private int value;
public IntWritable() {}
public IntWritable(int value) { set(value); }
/** Set the value of this IntWritable. */
public void set(int value) { this.value = value; }
/** Return the value of this IntWritable. */
public int get() { return value; }
Je vous en prie. Si cette réponse est utile, vous pouvez uppoter.